试图弄清楚如何找到与async.eachSeries完全相同的功能,我需要一个按顺序运行的异步动作列表(不是并行)但是找不到在原生ES6中执行它的方法,任何人都可以建议,请?
ps考虑了发电机/产量,但还没有经验,所以我没有意识到它究竟能帮助我.
编辑1
根据请求,这是一个例子:
假设这段代码:
let model1 = new MongooseModel({prop1: "a", prop2: "b"});
let model2 = new MongooseModel({prop1: "c", prop2: "d"});
let arr = [model1 , model2];
Run Code Online (Sandbox Code Playgroud)
现在,我想在一系列中运行它,而不是并行,所以使用"异步"NPM很容易:
async.eachSeries(arr, (model, next)=>{
model.save.then(next).catch(next);
}, err=>{
if(err) return reject(error);
resolve();
})
Run Code Online (Sandbox Code Playgroud)
我的问题是:使用ES6,我可以原生使用吗?没有NPM'异步'包?
编辑2
使用async/await可以轻松完成:
let model1 = new MongooseModel({prop1: "a", prop2: "b"});
let model2 = new MongooseModel({prop1: "c", prop2: "d"});
let arr = [model1 , model2];
for(let model of arr){
await model.save();
}
Run Code Online (Sandbox Code Playgroud) 我的问题与此非常相似,但我无法让它起作用:(
问题:
我有一个需要在IE11和Chrome中运行的Javascript程序.
它有一个我需要按顺序执行的函数列表.
每个函数都返回一个Promise.Promise.all(promisesArray)工作到我可以"等待",直到所有功能完成后再继续.但它并不保证每个功能按顺序运行.这很重要.
我尝试过使用Array.prototype.reduce(),但我无法弄清楚如何正确使用它.
因为我需要在IE11中运行,所以我不能使用像"箭头功能"这样的ES6功能.
这是我的代码:
<script>
var fn = function(arg) {
return new Promise (function (resolve, reject) {
console.log("fn(" + arg + ")...");
resolve("OK");
});
}
var p = fn("A").then(function(r) {
console.log("promise resolved: " + r + ".");
})
var chain = [];
chain.push(fn("3"));
chain.push(fn("1"));
chain.push(fn("2"));
console.log("Built chain:", chain);
Promise.all(chain);
chain.length = 0;
chain[2] = fn("30");
chain[1] = fn("20");
chain[0] = fn("10");
chain.reduce(function(promise, item) {
return promise.then(function() {
console.log("then:", item);
}), …Run Code Online (Sandbox Code Playgroud)