【问题标题】: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

【讨论】:

    猜你喜欢
    • 2018-12-11
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    相关资源
    最近更新 更多