首先,我阅读了有关异步调用和返回的this thread(尤其是this answer)。但是我现在仍然在几天内纠缠于我的问题!
我正在构建一个脚本来检查数组中是否有可用的邮政编码。答案应为true
或false
。但是,使用该线程的答案仍然会返回undefined
。我还在学习,所以要温柔:)
我所做的是:
function checkPostcode(pc_nr_check) {
...........
$.getJSON(url+'?format=json', function(data){
........
var postcodeArray = postcodes
var postcodeInArray = pc_nr_check
if ($.inArray(postcodeInArray, postcodeArray) > -1){
myCallback(true)
} else {
myCallback(false)
}
});
}
function myCallback(response) {
var answer = response;
return answer;
} // console.log this give true or false
$('.custom-checkout').on('click', function(e){
var is_available = myCallback();
if(is_available){
// show some stuff
}
});
我只是不明白为什么这是未定义的。我还尝试设置全局var answer
并从return answer;
函数中删除myCallback
。
任何帮助非常感谢。
答案 0 :(得分:0)
您可以使用原始函数调用中的async/await
,return
Boolean
function checkPostcode(pc_nr_check) {
...........
return $.getJSON(url+'?format=json')
.then(function(data) {
........
var postcodeArray = postcodes
var postcodeInArray = pc_nr_check
return $.inArray(postcodeInArray, postcodeArray) > -1
});
}
$('.custom-checkout').on('click', async function(e){
var is_available = await checkPostcode();
if(is_available){
// show some stuff
}
});