Поймать отклонить от обещания

Я хочу держать ошибку от func()rejectне прямо к onError() по выбору,

Прежде чем я всегда позволю func()resolveи определить результат возврата после yield func(),
если я хочу направить onError() использование throw ..;

Хотите узнать какую-нибудь лучшую идею? func()reject но детермир после yield func(), прямо к onError() или нет

co(function* () {
  yield func();
  // if reject catch here, not direct to onError 


  yield func();
  // if reject don't catch here just direct to onError

}).then(function (response) {
  response = JSON.stringify(response);
  res.send(response);
}, function (err) {
  onError(err);
});


// ...
func: function() {
  return new Promise(function (resolve, reject){
    ...
    reject();
  });
},

1 ответ

Решение

co опоры try/catch:

co(function* () {
  try{
      yield func();
  }
  catch {
     // if reject catch here, not direct to onError 
  }




  yield func();
  // if reject don't catch here just direct to onError

}).then(function (response) {
  response = JSON.stringify(response);
  res.send(response);
}, function (err) {
  onError(err);
});

См. Документы: https://www.npmjs.com/package/co.

Другие вопросы по тегам