node.js - 从异步函数中提取值
问题描述
我正在使用我们的套接字并且我有很多请求,所以我认为最好将数据从异步函数中提取出来并将其放入它之外的变量中。我的代码看起来像这样,但我只是收到请求 [Pending]:
var variable;
var Request = require("request");
function getAsyncValue() {
return new Promise((resolve, reject) => {
Request.get(url, (error, response, body) => {
if(error) {
return reject(err);
}
var object = JSON.parse(body);
var value = object.data.available_balance;
resolve(value);
});
});
}
async function asyncWrapper() {
variable = await getAsyncValue();
return(variable);
}
printVariable = asyncWrapper();
console.log(printVariable);
关于如何实现目标的任何想法?
解决方案
将您的 console.log 放入 asyncWrapper() 中,如下所示:
async function asyncWrapper() {
variable = await getAsyncValue();
console.log(printVariable);
return(variable);
}
printVariable = asyncWrapper();
这样做的原因是因为当你在 asyncWrapper() 之后有 console.log() 时,它将立即被调用,而不是像你需要的那样以同步方式调用。
或者您可以执行以下操作:
只需将 asyncWrapper 函数调用包装在另一个异步方法中,并在其中等待 asynWrapper() 的结果。往下看:
var function1 = async function () {
printVariable = await asyncWrapper();
console.log(printVariable);
}
推荐阅读
- npm - 如何使用单个命令同时运行我的实时服务器并使用 node-sass 编译 sass?
- java - StreamSets 处理器找不到 Redis 库
- c# - ASP.NET Core:有没有办法从 HTML 表单按钮调用方法?
- javascript - 如何使用客户端 JavaScript 模拟人类行为来玩 Flash 游戏?
- python - 为什么 Scrapy Spider 不跟随下一页?
- javascript - 如何在javascript中以数字形式获取选定文本的范围?
- c# - 数组元素获得内存覆盖导致访问冲突异常
- c# - 在 C# .NET 核心的请求标头中,如何检查一个键是否有多个输入?
- github-actions - GitHub 操作构建的最后一个工件的 URL
- codenameone - 代号:iPad 上的选取器不再有任何按钮