javascript - 在 Promise javascript 中使用全局变量
问题描述
我不熟悉在 javascript 中使用异步函数和承诺。我正在尝试获取一些在异步函数中设置/创建的数据,这些数据作为 promise 返回。如何在 then() 函数之外获取这些数据。有没有办法做到这一点?
var config={}
//global variable
async function drawGraph(graph) {
//some code
.
.
.
config={
linkStrength: 1,
linkDistance: 20,
nodeStrength: -30,
Size: 4,
restart: reset
};
}
makeRequest().then(data => drawGraph(data));
console.log(config.Size);
// Doesn't work
解决方案
由于drawGraph
返回一个 Promise,您至少有两个选择。第一种选择是使用现有的承诺链:
makeRequest()
.then(data => drawGraph(data))
.then(() => console.log(config.Size));
第二种选择是使用await
:
const data = await makeRequest();
await drawGraph(data);
console.log(config.Size);
但是要使上面的方法起作用,虽然顶级 await 仍然不可用,但它需要被包装在一个async
函数中。您可能必须执行以下操作:
async function run() {
const data = await makeRequest();
await drawGraph(data);
console.log(config.Size);
}
run().then(() => console.log('Done'));
推荐阅读
- web - 在
index.html 中不起作用 - node.js - 如何获得 BEP20 代币的价格?
- javascript - 获取特定的详细信息 onPress 标记
- r - 修改 plotly 折线图中的悬停模板
- flutter - Navigator pushNamed 未处理小部件
- javascript - 无法让 setValue 在 GoogleScripts 中正常工作
- html - 向上垂直对齐菜单元素
- reactjs - 我无法在我的反应 js 中添加嵌入的 instagram
- python - ImportError:无法从部分初始化的模块'serial'导入名称'Serial'(很可能是由于循环导入)
- python - 为什么我会收到错误:pygame.error: video system not initialized