英语不是我的第一语言。我会尽力解释细节。我真的很抱歉。
我是学习发电机的人。这对像我这样的初学者来说真的很难.......
我尝试了所有我能做的事情,但它没有像我预期的那样工作。
function* httpget(par_url, par_port, par_agent)
{
let url = new URL(par_url);
const settings =
{
hostname: url.hostname,
port: par_port,
path: url.pathname,
agent: false,
}
var data = "";
http.get(settings, (res) => {
res.on('data', (chunk) => {
data += chunk;
});
res.on('end', () => {
console.log("!done!");
get.next(data);
});
}).on("error", (err) => {
console.log("Error: " + err.message);
});
var result = yield "Hello, there!";
return result;
}
var get = httpget("http://localhost/index.html", 80, false);
console.log(get.next());
console.log(get);
该场景暂停,直到从给定的URL地址获取内容,并返回其内容,在" get"中分配内容。变量
这个发电机应暂停其工作并返回(或屈服,我不知道,但我认为它的工作方式就像返回一样)"你好,那里!"
所以< em> console.log(get.next())将记录&#34;你好,那里!&#34;。
data = yield &#34;你好,那里!&#34 ;;
并等到下一个数据进入
res.on('end', () => {
console.log("!done!");
get.next(data);
});
中的数据通过get.next(数据) 后,此数据应分配给结果变量 并返回其结果值..它不是。
的console.log(获取); //内容&#34; localhost / index.html&#34;?
我的理论是get.next()这个函数是异步工作的,它不会等到数据通过get.next(数据)。
或者我尝试触发next()两次,但这会在结果变量中赋值为null
我不知道发生了什么事。有什么问题?