我编写了一段代码,使用promise从异步调用返回一些数据。当我尝试执行时,我得到“语法错误等待仅在异步函数中有效”,并且我无法得到代理应用程序请求。。。错误:连接错误。
我不确定为什么会出现这些错误
在函数调用之前,我尝试过使用异步,但没有成功
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函数返回的数据。现在我得到了上面提到的错误。但是不使用wait,我得到body的值为{}。
请帮帮忙
这对我很有效。
我最初有:
exports.doSomething = functions.database.ref('/posts/{postId}').onCreate((snapshot, context) => {
// ...
const [response] = await tasksClient.createTask({ parent: queuePath, task });
});
但是我在这里添加了单词async
(在快照的圆括号之前),然后错误就消失了
// here
.onCreate(async (snapshot, context) => {
所以现在代码是
exports.doSomething = functions.database.ref('/posts/{postId}').onCreate(async (snapshot, context) => {
// ...
const [response] = await tasksClient.createTask({ parent: queuePath, task });
});
await
只能在标记为async
的函数中调用。因此,您可以创建一个async IIFE
,并从那里调用httpGet
。
(async function(){
var body = await httpGet('link');
$.response.setBody(body);
})()
基本上,当您使用一个asynchronous
操作时,您也需要使整个流程异步。因此,async
关键字kindof使用ES6生成器函数并使其返回promise。
如果你有困惑,你可以看看这个。
我在Sequelize的节点8上。js 当尝试使用时,出现以下错误。 代码: 获取以下错误: 我做错了什么?
我正在尝试设置一些数据在使用这个节点js代码的FIRESTAR: 在控制台中运行文件: 给我这个错误: 如何解决这个问题
在开始之前,我承认有几个问题可能听起来与我的标题类似,但是,我读到的所有问题都比我的代码更复杂,解释似乎与我的情况无关。 有人能帮我理解我的代码(下面的代码片段)中发生了什么导致了这个错误吗 未捕获SyntaxError:await仅在异步函数和顶级模块体中有效。 据我所见,导致错误的位于“顶层”主体中。或者是顶级身体的其他意思?谢谢! 编辑区别于其他建议(类似)的问题在这里:我的问题不涉及htt
试图使一个chrome扩展刮一个网站,但它总是在内容完全加载之前(在manifest.json的文档读取后尝试) 每次有人叫我: 还尝试:
我有一个异步函数,它在代码中的某个地方按setInterval运行。此函数定期更新一些缓存。 我还有一个不同的同步函数,它需要检索值——最好是从缓存中检索,但如果是缓存未命中,则从数据源检索(我意识到以同步方式进行IO操作是不明智的,但假设在这种情况下需要这样做)。 我的问题是,我希望同步函数能够等待异步函数中的值,但是不可能在非异步函数中使用关键字: 现在,通过将中的逻辑提取到一个新的同步函数中
我想使用谷歌云视觉API。我复制了代码,但出现以下错误:SyntaxError:await仅在异步函数中有效。 有没有办法解决这个问题? 非常感谢