【发布时间】:2016-01-31 00:10:14
【问题描述】:
我正在映射一个数组,对于新对象的返回值之一,我需要进行异步调用。
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 进行编译?
目前最好的实现方式是什么?
【问题讨论】:
-
也许塔卡看看github.com/caolan/async地图功能
-
您必须在地图中使用的函数中实现回调或承诺。
-
要顺序运行 Promises(包装器),请参阅this question 的答案
标签: javascript node.js asynchronous