相关疑难解决方法(0)

ES6 Promises - 像async.each这样的东西?

试图弄清楚如何找到与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)

javascript asynchronous ecmascript-6 es6-promise

26
推荐指数
3
解决办法
6689
查看次数

如何序列化返回Promises的Javascript函数数组?

我的问题与非常相似,但我无法让它起作用:(

问题:

  1. 我有一个需要在IE11和Chrome中运行的Javascript程序.

  2. 它有一个我需要按顺序执行的函数列表.

  3. 每个函数都返回一个Promise.Promise.all(promisesArray)工作到我可以"等待",直到所有功能完成后再继续.但它并不保证每个功能按顺序运行.这很重要.

  4. 我尝试过使用Array.prototype.reduce(),但我无法弄清楚如何正确使用它.

  5. 因为我需要在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)

javascript es6-promise

2
推荐指数
1
解决办法
317
查看次数