【问题标题】:How to call a second function after the execution of first执行第一个函数后如何调用第二个函数
【发布时间】:2021-02-16 10:00:58
【问题描述】:

我有一个函数 f1(valueOfData) 正在执行,我可以从外部数据源中提取数据。此外,我还有另一个函数f2(),它有一个 if 循环,并在调用第三个函数之前验证该值是否已被提取。 在尝试了很多之后,我陷入了这样一种情况,即在 f1(valueOfData) 的执行完成之前调用第二个函数(数据验证函数)并提取数据(需要几分钟)。

我知道 Javascript 是事件驱动的,因此尝试使用第二个函数(验证函数)作为回调,但是我仍然无法实现它。此外,我无法使用window.setTimeOut(millis),因为我需要计算从数据库中检索数据所需的确切时间(使用performance.now())。

function call(){
  doc1.validateFilterColumn("columnName");
}

function a(callBack){
  doc1.applyFilter('1-7');
  callBack();
}
 
a(call);

有人可以帮我建议如何在执行第二个函数之前等待第一个函数完全完成。

【问题讨论】:

  • 哪个函数是“第一”,哪个是“第二”?
  • 我有点不清楚你的代码中哪个函数是f1,哪个是f2?你指的是applyFilter()f1方法和validateFilterColumnf2函数吗?
  • 请展示你的真实代码,因为这很可能与异步任务有关。
  • 函数是: 1) 第一个函数是 doc1.applybookmark(value):这是一个异步函数,它调用从其中获取数据的 API。我创建了调用这个 api 的函数 f1()。 2)第二个函数是值的验证函数。

标签: javascript dom-events javascript-objects


【解决方案1】:

默认情况下,javascript 会按顺序运行代码。如果你有同步函数,你可以这样调用它们:

functionA();
functionB();

如果是异步函数,你可以简单地使用异步等待格式:

async function A(){
await functionB();
await functionC();
.
.
.
}

或者您可以在完成第一个之后立即定义回调函数。

【讨论】:

    【解决方案2】:

    你可以试试:

    async function f1(){
      let something = await processYouWantToWait()
      f2()
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-19
      相关资源
      最近更新 更多