Javascript 如何在我的nodejs编码中使用承诺链
上面的编码工作得很好,但我想使用上面的编码承诺链。请帮助我如何使用?您可以这样做:Javascript 如何在我的nodejs编码中使用承诺链,javascript,node.js,Javascript,Node.js,上面的编码工作得很好,但我想使用上面的编码承诺链。请帮助我如何使用?您可以这样做: exports.updateMyData = function (data) { var resultPromise = Q.defer(); var errorResponse = function (err) { resultPromise.reject(err); }; findById(data.id).then(function (mydata) {
exports.updateMyData = function (data) {
var resultPromise = Q.defer();
var errorResponse = function (err) {
resultPromise.reject(err);
};
findById(data.id).then(function (mydata) {
if (!mydata) {
errorResponse("No item found to update");
}
mydata.updateAttributes(data).then(function (mydata) {
resultPromise.resolve(mydata)
}, errorResponse)
}, errorResponse);
return resultPromise.promise;
};
或者像这样被锁住:
exports.updateMyData = function (data) {
return findById(data.id).then(function (mydata) {
if (!mydata) {
throw new Error("No item found to update");
}
return mydata.updateAttributes(data);
});
};
请注意这两个选项如何返回内部承诺,而不是创建新承诺。另外,在中抛出。然后()
处理程序将自动拒绝该承诺
创建一个新的承诺,就像你原来的代码那样,当你可以返回你已经拥有的承诺时,这被认为是一个错误,应该避免。可能重复的@ppshein-在哪一行代码上会发生此错误?调用导出函数时是否将数据作为参数传递?抱歉,实际错误是mydata未定义
。显示返回mydata.updateAttributes(数据)时出错代码>那一行。@ppshein-那是你的代码-我刚从你的问题中复制过来。你必须告诉我们什么是mydata
。@ppshein-你是说它是data.updateAttributes(mydata)
?
exports.updateMyData = function (data) {
return findById(data.id).then(function (mydata) {
if (!mydata) {
throw new Error("No item found to update");
}
return mydata;
}).then(function(data) {
return mydata.updateAttributes(data);
});
};