【发布时间】:2018-07-01 14:01:41
【问题描述】:
在我的代码中,我尝试为 json 变量赋值以在之后返回它(因为我无法从 anon. 函数返回它)。
由于我的函数是异步的,因为它发送请求(也许有人知道如何使它同步?我不打算让它异步),我在请求之前添加了await (https.get)。
我一直试图从 Promise 中获取价值,但它始终是 undefined,即使我已经等待异步函数。
这是一个代码:
async function get_users() {
const https = require('https');
var token = '...';
var json = undefined;
await https.get('...', (resp) => {
let data = '';
resp.on('data', (chunk) => {
data += chunk;
});
resp.on('end', () => {
json = JSON.parse(data)['response']['items'];
});
}).on("error", (err) => {
console.log("Error: " + err.message);
});
return json;
}
get_users().then(function(result) {
console.log(result);
});
【问题讨论】:
-
我搜索了一下,不认为
https.get会返回一个承诺。await不会等待请求完成。 -
问题是
json在我返回时是未定义的。什么原因? -
stackoverflow.com/questions/14220321/… 是问题所在 - 您的 await 将在当前执行环境完成其任务后完成,而不是在请求完成时完成。
-
那我该怎么办?
标签: javascript asynchronous scope es6-promise synchronous