【问题标题】:promise mapping array of objects with array values承诺用数组值映射对象数组
【发布时间】:2016-09-18 14:52:18
【问题描述】:

在迭代承诺时有点迷失,我试图改变这个:

[{
 ' site' : ['url', 'url', 'url']
},
{
 ' site' : ['url', 'url', 'url']
}]

这样就变成了:

[{
'site' : [{ 'url' : result_of_function }, { 'url' : result_of_function }, { 'url' : result_of_function }]
},
{
  'site' : [{ 'url' : result_of_function }, { 'url' : result_of_function }, { 'url' : result_of_function }]
}]

到目前为止,我创建了下面的函数,但由于某种原因没有调用 checkBranding。

function searchPageArray(brand, siteObjArr) {

    return Promise.map(siteObjArr, function(sitesObj){

    var k = Object.keys(sitesObj)[0]
    var urlArr = sitesObj[k];

    return Promise.map(urlArr, function(url){

        return searchPage(url).then(function(html){

            var tempObj = {}

            tempObj[url] = checkBranding(url, html, brand)

            return tempObj

            })
        })

    return sitesObj;

})

}

感谢您的帮助!

【问题讨论】:

    标签: javascript arrays promise bluebird


    【解决方案1】:

    你可以使用bluebird.jsprops()方法。

    // You must use bluebird to achieve this
    var Promise = require('bluebird');
    
    function searchPageArray(brand, siteObjArr) {
    
        return Promise.map(siteObjArr, function (sitesObj) {
    
            var k = Object.keys(sitesObj)[0]    
            var urlArr = sitesObj[k];
    
            return Promise.map(urlArr, function (url) {
    
                return searchPage(url)
                    .then(function (html) {
                        // Use promise.props(). It resolves all properties of a 
                        // object before returning. If there are any properties that
                        // arent promises they are returned as normal.
                        return Promise.props({
                            url: checkBranding(url, html, brand) // Assuming checkBranding() returns a promise.
                        });
                    });
            });
    
            return sitesObj;
    
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2020-07-22
      • 2021-04-20
      • 2019-04-28
      • 1970-01-01
      • 2022-06-17
      • 2021-12-04
      • 2021-04-18
      • 1970-01-01
      • 2017-12-15
      相关资源
      最近更新 更多