php for循环请求接口,for循环中请求数据接口

// 如果你用 node 的话,可以用 util.promisify 来封装 node 回调风格调用

// 或者就自己写一个

function updateTaskLastMile(...args) {

return new Promise((resolve, reject) => {

taskMainRepo.updatetasklastmile(...args, (err, data) => {

if (err) {

reject(err);

} else {

resolve(data);

}

});

});

}

async function main() {

const bb = [];

const promises = bb.map(b => updateTaskLastMile(b));

// 这个 aa 就是你想要的

const aa = await Promise.all(promises);

}

但是上面这个 main 必须要每个 bb 的调用都成功才会返回也就是说,对于 Promise.all,如果有一个失败,必定全部失败。那么可以这样改写(参阅从不用 try-catch 实现的 async/await 语法说错误处理):

async function main() {

const bb = [];

// 注意这里加的 .catch

const promises = bb.map(b => updateTaskLastMile(b).catch(err => false));

// 这个 aa 就是你想要的

const aa = await Promise.all(promises);

}

这样,如果有调用失败,aa 中对应的元素就是 false,当然你也可以使用其它容易识别的值,比如 null、undefined 或者某个特殊值,甚至可以干脆对返回值进行一次封装

const promises = bb

.map(b => updateTaskLastMile(b)

.then(data => ({ data }), err => ({ err })));

这样,aa 中的每个元素都是一个对象,要么有 data 属性,要么有 err 属性……