【发布时间】:2015-11-19 20:03:37
【问题描述】:
我尝试了下面的函数使用co 和javascript promise 测试,fulfill 将成功返回但reject 不会,并捕获未定义的错误。并且流程无法继续。为什么?
错误:
> at GeneratorFunctionPrototype.next (native)
at onFulfilled (/Users/../project/app/node_modules/co/index.js:65:19)
at runMicrotasksCallback (node.js:337:7)
at process._tickDomainCallback (node.js:381:11)
代码:
domain.run(function() {
var testPromise = function() {
return new Promise(function (fulfill, reject){
//reject('error');
reject(new Error('message'));
});
};
co(function *() {
var d = yield testPromise();
console.log(d);
res.send('fin');
}).catch(onerror);
function onerror(error) { console.error(error.stack); }
});
domain.on('error', function(error) { console.error(error); });
【问题讨论】:
-
reject参数本身是否未定义?或者可能是因为您将一个字符串传递给了reject(),而该字符串没有.stack属性(稍后在您的代码中引用)? -
您应该始终将错误对象传递给拒绝处理程序。现有的错误对象或
new Error('blah blah') -
如果我删除
catch功能承诺仍然相同,无法移动到下一个功能 -
不要移除卡扣。相反,请在上面的代码中执行
reject(new Error('error'))。明白我的意思了吗? -
我编辑了,但我的问题是函数没有继续移动到下一个只是停止
标签: javascript node.js promise generator co