标题可能有点奇怪,但我会尝试解释。
我进行API调用以验证某些数据。为此,我使用以下函数:
function validateAddress(address) {
var validationURL = "/api/validateAddress/"+address;
$.getJSON(validationURL, function(data, textStatus, jqXHR){
if (textStatus === "success") {
return data.isValid
}
}));
}
// And then in other parts of the code I want to do something like:
if (validateAddress(address)) {
// do something awesome right here..
}
这个问题当然是异步调用,导致validateAddress()不返回任何内容,因为它在API调用返回任何结果之前结束。
那么我怎样才能真正使validateAddress()返回api调用的结果?欢迎所有提示!
答案 0 :(得分:1)
你几乎没有选择:
getJSON
,你需要直接使用$.ajax
并传递它async: false
)< / LI>
validateAddress
函数,作为请求完成时您将调用的第二个参数$.getJSON
调用的返回值,因为它是一个承诺,您可以使用.done()
将代码附加到该代码(此示例在此处{{ 3}})答案 1 :(得分:1)
如下:
function validateAddress(address) {
var validationURL = "/api/validateAddress/"+address;
return $.getJSON(validationURL);
}
然后像:
一样使用它validateAddress("myaddress").done(function(response) {
// do my stuff here
});