我正在尝试同步运行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,它在加载第一个函数时仍然执行第二个函数。如何按顺序运行?
答案 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;