我有两个功能的问题。我希望chcekResults
仅在callAPI
完成时运行。
我的点击事件:
$("a#showA").click(function (e) {
e.preventDefault();
chceckResults(callAPI(apiKey));
});
和功能:
var Count = 0;
var ContractsArray = new Array();
function callAPI(yourAPIKey){
var enquiry = URL + yourAPIKey;
//alert(enquiry);
$.ajax({
url: enquiry,
type: 'GET',
dataType: "jsonp",
jsonp: "callback",
jsonpCallback: "jsonpCallback2",
complete: function (response, responseCode) {
},
success: function (json) {
$.each(json.Contracts, function (index, contract) {
// alert("Count before increament : " + Count);
// alert(contract.ContractCode);
ContractsArray[Count] = contract.ContractCode;
// alert("Count after increament : " + Count);
// alert("ContractsArray[Count]: " + ContractsArray[Count]);
Count++;
});
}
});
}
function chceckResults(){
alert("Count value in chceckResults : " + Count);
for(var i = 0; i <= Count; i++){
alert("ContractsArray[" + i + "]: " + ContractsArray[i]);
}
}
我希望chcekResults
仅在callAPI
完成时运行。我怎么能这样做?
答案 0 :(得分:2)
只需在chceckResults
的成功处理程序中调用callAPI
函数:
success: function (json) {
chceckResults();
$.each(json.Contracts, function (index, contract) {
ContractsArray[Count] = contract.ContractCode;
Count++;
});
}
答案 1 :(得分:2)
你想在callAPI完成后运行chcekResults,有几种可能性,它在callAPI成功后运行(我想这是你真正想要的),或者callAPI失败,或者两者兼而有之。
由于callAPI正在进行ajax调用,因此你可以将chcekResults放在ajax的成功回调中。
这样:
$.ajax({
url: enquiry,
type: 'GET',
dataType: "jsonp",
jsonp: "callback",
jsonpCallback: "jsonpCallback2",
complete: function (response, responseCode) {
},
success: function (json) {
$.each(json.Contracts, function (index, contract) {
// alert("Count before increament : " + Count);
// alert(contract.ContractCode);
ContractsArray[Count] = contract.ContractCode;
// alert("Count after increament : " + Count);
// alert("ContractsArray[Count]: " + ContractsArray[Count]);
Count++;
});
// --------------------- Edit Begins -------------------------
chcekResults(...); // This is run after ajax response returns.
// --------------------- Edit Ends -------------------------
}
});
这是快速的方法,如果你想使它更通用,你可以将chcekResults作为回调传递给ajax,这样如果定义了这个回调,那么运行它,如果没有,忽略。这样,您可以使用此ajax,无论是否有回调。
答案 2 :(得分:1)
在checkResult
callAPI
回调中致电success
。
一旦函数返回,就会调用Success
。