返回异步变量或true / false以在其他函数中使用

时间:2018-01-11 17:53:20

标签: javascript jquery asynchronous

首先,我阅读了有关异步调用和返回的this thread(尤其是this answer)。但是我现在仍然在几天内纠缠于我的问题!

我正在构建一个脚本来检查数组中是否有可用的邮政编码。答案应为truefalse。但是,使用该线程的答案仍然会返回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

任何帮助非常感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用原始函数调用中的async/awaitreturn 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
    }
});