4
我想克隆一个承诺内的对象,并迭代它的一个属性。如何克隆一个对象并遍历其中一个属性?
这似乎是工作,你会得到objest数组,其中page_num
从2增加至44
var allOptions = _.map(_.range(2, 45), function(page){
return { body: { action: 'read', page_num: page, page_size: 5 }}
})
Promise.map(allOptions, function(options){
return Promise.resolve(options).delay(3000)
}).then(console.log)
但是上面这个例子是从头开始创建每一次的对象。
当我尝试克隆一个现有的对象,所以我得到了下面描述的行为。
var masterOptions = { body: { action: 'read', page_num: 1, page_size: 5 }}
var allOptions = _.map(_.range(2, 45), function(page){
var options = _.clone(masterOptions)
options.body.page_num = page
return options
})
Promise.map(allOptions, function(options){
return Promise.resolve(options).delay(3000)
}).then(console.log)
或
Promise.map(_.range(2, 45), function(page){
var options = _.clone(masterOptions)
options.body.page_num = page
return Promise.resolve(options).delay(3000)
}).then(console.log)
这些似乎并没有工作,选择对象似乎遍历每个迭代最后生成的目标{ body: { action: 'read', page_num: 44, page_size: 5 } }
。
如何克隆一个对象并遍历其中一个属性?
我相信我通过切换到lodash的[cloneDeep](https://lodash.com/docs#cloneDeep)来解决这个问题。 – ThomasReggi
这与promises/bluebird有什么关系?你不用'console.log(allOptions)'得到相同的行为吗? – Bergi