【发布时间】:2017-12-20 13:30:32
【问题描述】:
我正在使用 lodash _.forEach 循环,在 _.forEach 循环中我使用多个 promise 并放入数组 promise。使用 sendEmailApi 方法我正在向用户发送电子邮件,我的要求是如果我想从外部 _.forEach 循环退出时遇到任何错误,不想处理所有承诺。 下面的代码编写但不工作,如果我在循环中间遇到任何错误,它正在处理整个 _.forEach 循环
_.forEach(result, function (value, index) {
_.forEach(value, function (value1, index1) {
if(!displayName)
displayName = value1.displayname;
productList += '"' + value1.productplannames + '",';
});
tempJsonStr = '{"email":"' + index + '","displayname":"' + displayName + '","productplannames":[' + _.trim(productList, ",") + ']}';
console.log("tempJsonStr",tempJsonStr);
productList ="";
displayName="";
promises.push(emailUtils.sendEmailApiProcess(JSON.parse(tempJsonStr),responsePayLoad,task,done).then(function () {
}).catch(err => {
console.log("errrrrrrrrr");
return false;
}))
});
Promise.all(promises).then(function () {
console.log("All done");
});
【问题讨论】:
-
_.forEach()循环在任何电子邮件请求完成之前完成。 -
不要像这样构建自己的 JSON - 使用 JSON.stringify,了解 Promise 的工作原理,了解异步代码的流程 - 阅读 stackoverflow.com/questions/14220321/…
-
你正在以一个非常奇怪的顺序初始化
productList和displayName -
@Bergi 你知道如何分配它
-
那么你应该用
var声明它们,并且你应该在附加到它们的循环之前初始化它们。
标签: javascript node.js foreach promise lodash