【问题标题】:Main function calls the other functions one after the other主函数一个接一个地调用其他函数
【发布时间】:2021-04-22 05:13:47
【问题描述】:
正如标题所示,我想构建一个函数,一个接一个地调用其他函数。不幸的是,这些函数需要不同的时间长度,并且在执行时会出现问题,这是可以理解的。
这个问题有简单的解决方案吗?
function allInOne() {
loadData();
moveSheet();
sortStockData();
}
在第一个功能完成之前,第二个已经执行完毕。但这一切都应该一个接一个地完成。我刚刚被谷歌等卡住了。
提前致谢。
【问题讨论】:
标签:
javascript
google-apps-script
google-sheets
【解决方案1】:
查看函数内部,因为它们可能返回承诺
普通 Javascript 是单线程的,因此当您调用一个函数,然后调用另一个函数(如您所做的那样)时,您可以期望它们按顺序运行。
但是你可能会发现 loadData() 是一个异步函数,返回一个Promise。查看它的return 声明以检查这一点。
如果它返回一个承诺,你可以说,
loadData().then(result => moveSheet())
如果moveSheet也是,返回一个promise,你可以展开链如下:
loadData().then(result => moveSheet()).then(result => sortStockData())
另一种表达方式是使用 'await' 关键字
async function x(){
await loadData();
await moveSheet();
sortStockData();
}
更多关于 Promises 的信息在这里。
https://medium.com/javascript-scene/master-the-javascript-interview-what-is-a-promise-27fc71e77261