在我的代码中,我有一个函数,该函数取决于对API端点的异步调用的结果。为了使函数正常执行,它需要等待调用结果。因此,我已经阅读了async
个调用,并且从另一个Stack Overflow问题中了解到,您应该利用回调函数来启用正确的执行。
下面的代码是我试图利用回调使我的函数成功运行的尝试,但它不起作用,此刻我认为调用已被弄乱了。
我不确定如何构造此代码,但是我首先需要getInstructionType()
调用以返回其值,然后需要GetValidationResult()
调用以返回其值,然后是{{ 1}}函数需要执行。
setValidationRowColor()
答案 0 :(得分:1)
您可以将参数添加到可用作回调的函数中。然后,您可以在AJAX请求完成时调用它们,如下所示:
getInstructionType(applicationNumber, function(result) {
getInstructionValidationResult(applicationNumber, function(type) {
setValidationRowColor(result);
});
});
function getInstructionValidationResult(applicationNumber, callback) {
$.get(/*-snip-*/, function(data) {
// some custom logic to work with the response here...
callback && callback(data);
});
}
function getInstructionType(applicationNumber, callback) {
$.get(/*-snip-*/, function(data) {
// some custom logic to work with the response here...
callback && callback(data);
});
}
答案 1 :(得分:1)
回调(完全有效)的替代方法是promises-实际上只是另一种形式或回调。假设您使用的是jQuery的$ .get,那么您已经在使用Promises:
getInstructionType(applicationNumber, function(result) {
return getInstructionValidationResult(applicationNumber)
.then(function() {
setValidationRowColor(result)
})
});
function getInstructionValidationResult(applicationNumber) {
var url = //-snip-;
return $.get(url)
}
function getInstructionType(applicationNumber) {
var url = //-snip-;
return $.get(url)
}
请注意,我所做的只是return
$.get
,并添加了一个.then
,它可以在getInstructionType
内接受您的回调