如何在javascript中执行同步性

时间:2015-11-27 17:30:07

标签: javascript node.js promise

我想在数组上做一些思考:在添加新的参数检查后进行skinydobazy。

skinydobazy.forEach(function(klucz,index) {   
    getPrice(data.prices[0]).then(function(results) {

            var price = results.skinData.wep.median_price;
            if(price > 1)
            klucz.check = 1;

            console.log('HERE');

        });
  }); // end foreach 


  console.log(skinydobazy); //do sth after foreach

(在foreach循环之后)我想与更新的skinydobazy做一些思考。但我有一个问题。因为首先显示skinydobazy,但应该“HERE”和之后应该显示skinydobazy。

有解决方案吗? 谢谢

1 个答案:

答案 0 :(得分:1)

使用map代替forEach,您可以生成一个Promises数组。然后,您可以使用Promise.all订阅该数组中所有Promise的完成。

Promise.all(skinydobazy.map(function(klucz, index) {
  // Return the Promise that resolves on .then(fn)
  return getPrice(data.prices[0]).then(function(results) {

    var price = results.skinData.wep.median_price;
    if (price > 1)
      klucz.check = 1;

    console.log('HERE');

    // Resolve Promise with results
    return results;
  });
}).then(function(allResults) {
  // allResults will be an array of results
  console.log(skinydobazy);
});