将Promise函数映射到数组不会持久保存结果

时间:2019-02-08 21:16:06

标签: javascript arrays promise

我有一个带有两个数组作为属性的对象:

我想通过连续运行promise来填充数组。 我获取了promise的结果,并映射了一个函数来装饰数组中的所有项目。

虽然一个数组被填充并保留,而另一个数组仅在<add name="MpnModelDC" connectionString="metadata=res://*/Model.MpnModel.csdl|res://*/Model.MpnModel.ssdl|res://*/Model.MpnModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Server=SRV3;Database=DB1_DEMO;MultipleActiveResultSets=True;&quot;" providerName="System.Data.EntityClient" /> 函数中填充,但是最后该数组返回的仍为空。

您能帮助理解为什么吗?

我检查了Promise是否实际上已返回,并且确实在一种情况下有效,而在另一种情况下却没有。

这是我的伪代码:

map

1 个答案:

答案 0 :(得分:1)

在第二种情况下,map回调返回一个Promise,这种情况与第一种情况完全不同。

在第二种情况下,您需要等待所有这些承诺,并可以使用Promise.all

第二部分的代码如下:

.then( myObj => {
    return Promise.all(myObj.nodes.map(node => decorateNode(node.source)));
}).then(decorations => {
    myObj.decorators = decorations.map(decoration => {
        decoration = decoration[node.source];
        return ({
            ... 
        });
    })
    console.log('myObj.decorators', myObj);
    return myObj;
})