栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Bluebird Promise串行迭代,并解决修改后的数组?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Bluebird Promise串行迭代,并解决修改后的数组?

.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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/448658.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号