【发布时间】:2018-06-19 19:13:41
【问题描述】:
我有一个场景,我有一个需要使用请求 npm 模块同步评估的 URL 数组。详细来说,数组将是 forEach,它应该为当前 url 带来数据,然后只移动到选择下一个 url。我正在使用产量生成器。但它不起作用。请大家帮忙!
var Promise = require("bluebird");
var request = Promise.promisify(require("request"), {multiArgs: true});
Promise.promisifyAll(request, {multiArgs: true})
var url_arr = ["https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=AIzaSyDe3MyoHI6aSbYKdHOXloz9QepAMfes9XE", "https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=AIzaSyDe3MyoHI6aSbYKdHOXloz9QepAMfes9XE"];
function* fetch(obj) {
console.log("2")
var myobj = yield request.getAsync(obj).promise();
console.log("3", myobj)
return myobj;
}
url_arr.forEach(function (obj){
console.log("1", obj)
var output = fetch(obj);
console.log("4, ", output);
});
在上面的 sn-p 中,只有 1 && 4 打印在控制台中。我认为从来没有评估过二和三。
【问题讨论】:
-
“评估”是什么意思?你为什么在生成器函数中
return? -
请注意,问题中的代码似乎使用
.forEach()将异步代码与同步代码混合在一起。预期结果是要在.forEach()中记录的异步请求的响应吗?
标签: javascript node.js ecmascript-6 generator yield