一种方法是
Promise.all(ES6)。
该答案将在Node 4.0+中起作用。较旧的版本将需要Promise polyfill或库。我还使用了ES6箭头功能,
function对于Node <4
,可以将其替换为常规s。
该技术
request.get用Promise 手动包装。您还可以使用诸如request-
promise之类的库。
function urlTobase64(url) { return new Promise((resolve, reject) => { request.get(url, function (error, response, body) { if (!error && response.statusCode == 200) { resolve("data:" + response.headers["content-type"] + ";base64," + new Buffer(body).toString('base64')); } else { reject(response); } }); })}// Map input data to an Array of Promiseslet promises = input.map(element => { return urlTobase64(element.image) .then(base64 => { element.base64Data = base64; return element; })});// Wait for all Promises to completePromise.all(promises) .then(results => { // Handle results }) .catch(e => { console.error(e); })


