Поймать отклонить от обещания
Я хочу держать ошибку от 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.