Man*_*er 0 node.js promise async-await
我正在开发一个简单的不和谐机器人,我正在尝试打印有关某个玩家的一些一般数据。我最近了解了 async/await 并尝试将它实现到我的代码中。然而,它似乎不起作用,因为当我第一次触发此代码时,它会打印 null 但在后续触发器中它会打印正确的数据,表明我的函数没有等待 Promise 解析。
async function stats(){
data = await NBA.stats.playerInfo({ PlayerID: curry.playerId });
}
stats();
data = JSON.stringify(data);
console.log(data);
Run Code Online (Sandbox Code Playgroud)
变量 data 是在我的程序顶部声明的全局变量,最初初始化为 null。
如果我正确理解您的意图,您想要的是异步获取一些数据data,然后将其显示在控制台上。
您的实现stats正在正确执行提取。但是您的问题是,您登录到控制台的部分不依赖于正在完成的提取。
当您调用一个已声明的函数时async,您是说您希望它“在后台”执行。解释器不会等待该函数完成执行。
stats(); // begin executing this function
data = JSON.stringify(data); // but don't wait for it to finish before moving on to this line
console.log(data);
Run Code Online (Sandbox Code Playgroud)
显然,这不是你想要的。相反,您希望stats在 logging 之前等待完成它正在执行的操作data。stats作为一个异步函数返回一个 Promise,所以你可以这样做:
function logData() {
console.log(JSON.stringify(data));
}
stats().then(logData);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3942 次 |
| 最近记录: |