gpt4 book ai didi

javascript - 为什么 Yield 不能与请求模块一起使用?

转载 作者:行者123 更新时间:2023-12-01 02:32:49 27 4
gpt4 key购买 nike

我有一个场景,我有一个 URL 数组,需要使用请求 npm 模块同步评估。具体来说,Array 将是 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);
});

在上面的代码片段中,只有 1 && 4 打印在控制台中。我认为,二和三永远不会被评估。

最佳答案

从生成器函数中删除 return 语句,该语句会挂起生成器,调用 .next() 获取 value生成对象

function* _fetch(obj) {
var myobj = yield obj;
}

[1,2,3].forEach(function (obj) {
var {value:output} = _fetch(obj).next();
console.log("output:", output);
});

关于javascript - 为什么 Yield 不能与请求模块一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48190434/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com