该
.each函数不会更改通过链 传递 的值:
我简化了您的代码,作为输入,我假设:
var items = ['one','two'];
对于您的代码:
Promise.each(items, function(element) { return element+'.'; //return Promise.resolve(element+'.');}).then(function(allItems) { console.dir(allItems);});结果仍然是
['one','two']因为这是数组的解析值
items。每个内的返回值不会影响传递给链式的值的内容
then。
.map另一方面,该功能将具有以下效果:
Promise.map(items, function(element) { return element+'.'; //return Promise.resolve(element+'.');}).then(function(allItems) { console.dir(allItems);});在这里,
return值value将用于创建新数组,然后将其传递给
then。结果是
['one.','two.']。
allItems您的代码中出现的两个是不同的对象。
编辑 对于映射的串行迭代,我将编写一个如下的辅助函数:
function mapSeries(things, fn) { var results = []; return Promise.each(things, function(value, index, length) { var ret = fn(value, index, length); results.push(ret); return ret; }).thenReturn(results).all(); }资料来源:实施Promise.series



