我编写了一段代码,使用 Promise 从异步调用返回一些数据。当我尝试执行时,我得到“语法错误等待仅在异步函数中有效”,并且我还得到无法代理应用程序请求...错误:连接ECONNREFUSED。
我不确定为什么会出现这些错误
我尝试在函数调用之前使用 async,但它不起作用
var http = require('https');
var httpGet = function(url) {
return new Promise (function(resolve, reject) {
http.get(url,function(res) {
res.setEncoding('utf8');
var body = '';
res.on('data', function(chunk){
body += chunk;
console.log("The body is "+ body);
});
res.on('end',function(){resolve(body);});
}).on('error', reject);
});
};
var body = await httpGet('link');
$.response.setBody(body);
我希望变量主体具有从 httpGet 函数返回的数据。现在我遇到了上述错误。但如果不使用await,我得到的body 的值为'{}'。
请帮忙
await https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await只能在标记为的函数中调用async https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function。
所以,你可以做一个async IIFE
并致电httpGet
从那里。
(async function(){
var body = await httpGet('link');
$.response.setBody(body);
})()
基本上当你使用一个asynchronous
操作时,您还需要使整个流程异步。所以async
关键字 kindof 使用 ES6 生成器函数并使其返回一个 Promise。
你可以检查this https://javascript.info/async-await如果您有困惑,请出去。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)