2016-08-26 7 views
0

私はこの機能を他のPromise.allで呼び出すために使用しています。しかし、私はいつもこの警告を受け取ります:警告:約束はハンドラで作成されましたが、返されませんでした。 また、関数deleteFutureAppointments()は、元のpromise.allを終了したように見え、そのpromise.allチェーン内で他の作業を開始します。他のPromise.all内のPromise.allは完了前に終了しているようだが、約束を返さないという警告を表示する

function deleteFutureAppointments() { 
 
Appointment.findAll(
 
{ where: 
 
    { 
 
     pro_id, client_id, from_datetime_utc: { 
 
      $gt: new Date() 
 
     } 
 
    } 
 
}) 
 
.then((appointments) => { 
 
    if (!appointments) { 
 
     return new Promise((resolve) => resolve()); 
 
    }   
 
    const promises = appointments.map((id) => { 
 
     const appointmentQuery = { where: { client_id } }; 
 
     const appointmentSMIQuery = { where: { appointment_id: id.get("appointment_id") } }; 
 
     return AppointmentMedia.destroy(appointmentSMIQuery) 
 
     .then((result) => { 
 
      if (result) { 
 
       removeAppointmentMedia.push(id.get("appointment_id")); 
 
      } 
 
      AppointmentService.destroy(appointmentSMIQuery); 
 
     }) 
 
     .then(() => IndexAppointmentCalendar.destroy(appointmentSMIQuery)) 
 
     .then(() => Appointment.destroy(appointmentQuery)); 
 
    }); 
 
    return Promise.all(promises); 
 
}) 
 
.catch((err) => { 
 
    next(err); 
 
}); 
 
}

+0

がhttps://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html役立つ可能性がありますように私は再構築したいです – Iiridayn

答えて

2

あなたはAppointmentService.destroyからPromiseをINGのreturnていないように見える - あなたの問題かもしれません。

function deleteFutureAppointments() { 
 
    Appointment.findAll({ where: { 
 
    pro_id, client_id, 
 
    from_datetime_utc: { $gt: new Date() } 
 
    } }).then(appointments => { 
 
    return Promise.all(appointments.map(appointment => { 
 
     var id = appointment.get("appointment_id"); 
 
     const appointmentSMIQuery = { where: { 
 
     appointment_id: id 
 
     } }; 
 
     return AppointmentMedia.destroy(appointmentSMIQuery).then(result => { 
 
     if (result) 
 
      removeAppointmentMedia.push(id); 
 
     return AppointmentService.destroy(appointmentSMIQuery); 
 
     }) 
 
     .then(() => IndexAppointmentCalendar.destroy(appointmentSMIQuery)) 
 
     .then(() => Appointment.destroy({ where: { client_id } })); 
 
    })); 
 
    }) 
 
    .catch((err) => { 
 
    next(err); 
 
    }); 
 
}

関連する問題