具有不同功能时间执行的同步运行时

时间:2017-10-21 00:30:11

标签: javascript jquery asynchronous promise synchronous

我正在尝试同步运行2个功能。第一个函数执行速度比第二个函数慢很多。我需要它从1到2同步运行。

 //1st function
 function first(){
 $.getJSON("/update/", () => {
   //updates 
  })
 }

 //2nd function
 function second(){
  //triggers some event
 }

此时,我已尝试使用Promise,但无济于事,这是一次失败

 //Promise

 var promiseVar = new Promise((resolve, reject) =>{
    first(); //run the first function
             //note: first() will take more time to run because it's
             //grabbing something from the server to update to client
    resolve('Success');
 })

 promiseVar.then((msg)=>{
    console.log(msg);
    second(); 
 })

通过使用Promise,它在加载第一个函数时仍然执行第二个函数。如何按顺序运行?

1 个答案:

答案 0 :(得分:0)

来自return函数的

$.getJSON() first来电,使用.then()。注意jQuery.getJSON()返回一个jQuery promise对象,.then()可以链接到

function first() {
  return $.getJSON("/update/")
}

first()
.then(second, (jqxhr, textStatus, errorThrown) => console.error(errorThrown));



function first() {
  return $.Deferred(dfd => {
    setTimeout(() =>
      dfd.resolve("/update/"), Math.floor(Math.random() * 1500))
  }).promise()
}

function second(data) {
  console.log(data);
}

first()
  .then(second
  , (jqxhr, textStatus, errorThrown) => console.error(jqxhr, errorThrown))
  .fail(err => console.error(err)); // handle error for `second` call

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
&#13;
&#13;
&#13;