javascript - 具有两个功能的 async/await JavaScript
问题描述
我是 JavaScript 新手,我不知道如何处理异步性。我已经阅读和修补了几个小时,但我无法弄清楚。
当我在控制台中独立运行它们时,我有两个函数可以很好地工作......但是,当我从 JS 文件中按顺序运行它们时,第二个函数在第一个函数输出之前运行。我已经阅读了关于 async/await for javascript 的所有内容,但我无法弄清楚我需要做什么才能让第一个函数在第二个函数开始运行之前完全运行。另外,网上的例子对我来说没有意义。如果你能帮助我,那就太好了。
第一个函数只是掷六个骰子。第二个函数获取此函数的输出并在屏幕上绘制滚动以供用户查看。
如何让它们同步运行(首先是功能 1,其次是功能 2)?
function diceRoll(purchased) {
DiceResults = []
for (var i = 0; i < purchased; i++) {
DiceResults.push(Math.floor(Math.random() * 6) + 1);
}
return DiceResults
}
function DiceRolling(DiceResults) {
await diceRoll();
for (var i in DiceResults) {
Q = (DiceResults[i])
var x = document.createElement("IMG");
x.setAttribute("src", Q + ".png");
x.setAttribute("width", "304");
x.setAttribute("height", "228");
document.body.appendChild(x);
}
}
diceRoll(5)
DiceRolling(DiceResults)
解决方案
您对异步/等待的目的感到困惑。这是为了处理对外部资源的异步请求。在您的示例中没有必要,因为一切都在内部发生。像这样改变你的例子:
function diceRoll(purchased) {
DiceResults = []
for (var i = 0; i < purchased; i++) {
DiceResults.push(Math.floor(Math.random() * 6) + 1);
}
return DiceResults
}
function DiceRolling(DiceResults) {
for (var i in DiceResults) {
Q = (DiceResults[i])
var x = document.createElement("IMG");
x.setAttribute("src", Q + ".png");
x.setAttribute("width", "304");
x.setAttribute("height", "228");
document.body.appendChild(x);
}
}
var results = diceRoll(5)
DiceRolling(results)
做你所追求的。第一个函数的结果被传递给第二个。
推荐阅读
- c++ - 使用函数模板重载运算符
- python - 执行 AES 密钥扩展时遇到问题
- c# - 当我使用多线程时,我只能从第一个线程发送一次消息,之后我无法从第一个线程发送消息
- python - 在 Stock Screener 中传递发布数据时出错
- apache-spark - 数组到pyspark中的多列
- visual-studio - Xamarin XAML 设计器不会更新任何转换数据
- visual-studio - 如何在 Visual Studio Code 2019 中获取位置参数名称
- c - c语言输入法
- python - 将长列表保存到熊猫中的csv中
- python - 如何计算Python中两个数据框列表中所有相应元素的均值和标准差?