等到其他功能完成

时间:2017-07-07 13:21:23

标签: javascript jquery

我有问题。几乎在同一时间从一个事件调用两个函数。 Function1正在做一些异步员工:

function1 (callback_Data){  
   //some other callbacks here  
}

function2 (){

}

我希望function2等到function1中的所有回调完成后再开始。

5 个答案:

答案 0 :(得分:0)

在function1的最后调用function2()。如果有任何异步回调,请小心。在这种情况下,在最后一次回调结束时调用function2。

function1 (callback_Data) {
  // some logic here

  // async function
  asyncFunction(param1, param2, function() {
    // the logic that is executed, when asyncFunction is completed
    function2();
  });
}

function2() {
  // some other logic
}

答案 1 :(得分:0)

承诺国

承诺可以是以下三种状态之一:

等待承诺的结果尚未确定,因为将产生其结果的异步操作尚未完成。 已实现 - 异步操作已完成,并且promise具有值。 拒绝 - 异步操作失败,永远不会履行承诺。在被拒绝的状态下,承诺有一个原因可以指示操作失败的原因。

var greetingPromise = sayHello();
greetingPromise.then(function (greeting) {
   console.log(greeting);    // 'hello world’
 });

这个块可以帮助你执行第一个函数1然后它将进入函数2。

答案 2 :(得分:0)

如果在function1中异步执行了某些操作,那么在它们完成之前,它们将不会被阻止,因为它们被安排执行。

你可以发起一个承诺,并在then中传递function2,当所有的执行都从function1完成后,你就可以解决这个承诺。

答案 3 :(得分:-1)

这是一个简单的方法,你可以在第一个功能完成执行后调用第二个功能  像这样

function1 (callback_Data){ 
//some other callbacks here 
function2 ();//here is the function call
}
function2 (){
//your code
}

答案 4 :(得分:-1)

您可以使用承诺进行异步操作

'use strict';

// creating object promise
let promise = new Promise((resolve, reject) => {

  setTimeout(() => {
    // this will make promise fulfilled with result "result"
    resolve("result");
    // this will make promise rejected with result "error"
    // reject("error");
  }, 1000);

});

// promise.then adds functions on success and failure
promise
  .then(
    result => {
      // first function - will be executed on resolve
      alert("Fulfilled: " + result); // result - argument resolve
    },
    error => {
      // second function will be executed on reject
      alert("Rejected: " + error); // error - argument reject
    }
  );