我正在映射一個數組和一個新對象的返回值,我需要做一個異步調用。在地圖中調用異步函數的最佳方法是什麼?
var firebaseData = teachers.map(function(teacher) {
return {
name: teacher.title,
description: teacher.body_html,
image: urlToBase64(teacher.summary_html.match(/src="(.*?)"/)[1]),
city: metafieldTeacherData[teacher.id].city,
country: metafieldTeacherData[teacher.id].country,
state: metafieldTeacherData[teacher.id].state,
studioName: metafieldTeacherData[teacher.id].studioName,
studioURL: metafieldTeacherData[teacher.id].studioURL
}
});
該功能的實現看起來像
function urlToBase64(url) {
request.get(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
return "data:" + response.headers["content-type"] + ";base64," + new Buffer(body).toString('base64');
}
});
}
我不清楚什麼是做到這一點...承諾的最佳方法?嵌套回調?在ES6或ES7中使用某些東西,然後用Babel進行傳輸?
當前最好的實現方法是什麼?
謝謝!
也許塔卡看看https://github.com/caolan /異步映射功能 – Herku
您必須在內部映射中使用的函數中實現回調或承諾。 – Danmoreng