【发布时间】:2019-01-07 18:44:24
【问题描述】:
当我在循环中使用 q promise 时遇到问题。结果展示
0
1
2
--
--
--
但我承诺的结果必须是:
0
--
1
--
2
--
有我的代码:
for(let i = 0; i < 3; i++) {
let row = planRespone[i];
let planData = {
diary_id:diaryData.id,
title:row.title
};
console.log(i);
addDiaryPlan(planData)
.then((insertId) => {
console.log("--");
})
.catch((err) => {
throw err;
})
};
并支持它
let addDiaryDetail = (data) => {
let q = Q.defer();
Mdl.addDiaryDetail(data, function(err, result) {
if(err) q.reject(err);
else q.resolve(result);
});
return q.promise;
}
在这种情况下我该如何使用 Promise?
【问题讨论】:
-
使用异步/等待。你可能根本不需要 Q 。 addDiaryDetail 可以通过 util.promisify 进行承诺。
-
你可以使用来自异步库的
each,这里是文档:caolan.github.io/async/docs.html#each -
@giankotarola - Javascript 现在内置了 Promise,是用于管理异步操作的 Javascript 语言的未来。教人们如何使用它比旧的异步库做事方式要好得多。
-
@jfriend00 当然!我认为您是对的,但可能是一种选择,开发人员必须决定如何去做。
-
使用 async-q 库中的每一个,这是异步库的承诺兼容版本:npmjs.com/package/async-q
标签: node.js asynchronous promise q