我想首先调用checkifPresentInActiveProjLib
函数,然后调用checkifPresentInClosedProjLib
函数。我该如何实现?
checkifPresentInActiveProjLib(function(flgAc) {
if (flgAc === "active_found")
// do something
$.ajax(...); // ajax call
});
checkifPresentInClosedProjLib(function(flgCl) {
if (flgCl === "closed_found")
// do something
$.ajax(...); // ajax call
});
答案 0 :(得分:2)
只需使用promises来处理异步事件。您需要修改checkifPresentInActiveProjLib
以返回承诺,在这种情况下,您的承诺为$.ajax(...);
,因此您执行return $.ajax(...);
,然后只需按以下方式调用下一个函数:
checkifPresentInActiveProjLib(...)
.then(function() {
checkifPresentInClosedProjLib(args)
})
答案 1 :(得分:2)
您可以使用javascript Promise
对象
function checkifPresentInActiveProjLib(flgAc) {
if (flgAc === "active_found")
alert('active_found');
};
function checkifPresentInClosedProjLib(flgCl) {
if (flgCl === "closed_found")
alert('closed_found');
};
function makeAjaxCall(){
var promiseObj = new Promise(function(resolve, reject){
resolve(checkifPresentInActiveProjLib());
});
return promiseObj;
}
makeAjaxCall().then(checkifPresentInClosedProjLib());
答案 2 :(得分:0)
您在两个函数中都有异步ajax调用。如果要在第一个完成后调用第二个,则需要等待第一个函数完成。
你可以通过调用第一个函数中ajax函数部分的响应部分中的第二个函数来做到这一点。
$sw.WriteLine($line.replace().replace().replace())
或者您可以使用承诺:
checkifPresentInActiveProjLib(function(flgAc) {
if (flgAc === "active_found")
// do something
$.ajax(...).done(function( data ) {
// call second function here
}););
});
然后将函数调用为:
checkifPresentInActiveProjLib(function (flgAc) {
return new Promise(function (resolve, reject) {
if (flgAc === 'active_found')
// do something
$.ajax(...)
.done(function (data) {
if (data) resolve(data);
})
.fail(function (err) {
reject(err);
});
});
});