我正在尝试在 C# 中执行类似 async/await 的功能,但在 Node js 中 我找到了一个 example但它给了我一个错误。
这是代码
function* gotNews(response){
console.log("in gotNews");
str='';
response.on('data', function (chunk) {
str += chunk;
});
response.on('end', function () {
str = JSON.parse(str);
console.log(str);
fetchCategories();
});
return str;
}
function fetchNews(sourceURL){
console.log("in fetch news");
sourceURL = url.parse(sourceURL);
console.log(sourceURL);
var options =
{
host: sourceURL.host,
port: 134,
path: sourceURL.path,
method: 'GET',
};
var req = http.request(options,yield gotNews);//start request and recive response in gotSources
req.end();
}
我正在使用 * yield 操作但是给我一个错误
ErrorC:\Users\Alaa\Desktop\Fluid_layout_with_jQuery_Masonry\1\app.js:198
var elnewselygat = yield gotNews();
^^^^^^^
SyntaxError: Unexpected identifier
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:901:3
最佳答案
您将需要生成器和 promises 以使其像async
/await
/Task
一样简单。
正如@Paul 所说,生成器是“ future 的功能”,因此您需要传递 --harmony
或 --harmony-generators
。此外,生成器在 V8 3.19 中受支持,仅在 Node.js 0.11.2 或更新版本中支持。
JavaScript 社区目前正在考虑多种可能的方法;其中有几个很好的概述here ,还有其他图书馆。
关于javascript - Nodejs 中的异步/等待替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20094972/