如何使用http请求在数组中添加新元素。
我有一个像这样的代码但由于nodejs上的async而没有添加新元素,我不知道如何传递它。
arr = [
{ id: 123},
{ id: 124},
{ id: 125},
{ id: 126},
]
arr.forEach(function(row, index) {
request.post('/test')
.then((data) => {
row.status = "success"
})
.catch((error) => {
row.status = "failed"
});
});
这样我就可以达到这样的目的。
[
{ id: 123, status: 'success' },
{ id: 124, status: 'failed' },
{ id: 125, status: 'failed' },
{ id: 126, status: 'success' },
]
我是NodeJ的新手。谢谢你们
答案 0 :(得分:0)
您可以尝试使用此热门节点模块Async。试试这个。在这里http://caolan.github.io/async/docs.html#each。
async.each(arr, _your_function, (err) => {
// check success
})
_your_function(){}
答案 1 :(得分:0)
您必须使用Promise.all
,因为您正在处理多项承诺:
let arr = [
{ id: 123},
{ id: 124},
{ id: 125},
{ id: 126}
]
Promise.all(arr.map((row, index) => {
return request.post('/test')
.then(data => {
row.status = "success"
})
.catch(error => {
row.status = "failed"
});
})).then(() => console.log(arr))
答案 2 :(得分:0)
使用async.eachOf,您可以访问数组中的元素和索引。
var async = require("async");
var arr = [
{ id: 123},
{ id: 124},
{ id: 125},
{ id: 126},
];
async.eachOf(arr, function(e, i, ecb){
request.post('/test',)
.then( (data) => {
e.status = "success"
return ecb(null);
})
.catch( (error) => {
e.status = "failed"
return ecb(null);
});
}, function(err){
if(err)
{
console.log("err");
}
else
{
console.log(arr);
}
});