同步运行功能

时间:2018-01-30 02:33:28

标签: javascript node.js request

如何使我的requestAddress函数同步运行?我应该制作这样的两个函数并使用回调吗?我该怎么做回调?我似乎无法理解如何为这种情况做到这一点。

function requestAddress(urlCombined) {
    request(urlCombined, function (error, response, body) {
        a = JSON.parse(body);

        c = addressInfo.status;

    });
}

function isValid() {

    // Retrieve address from input
    addressGet = $('#address').val();

    // Combine url to get address's information
    var urlCombined = 'websitehere' + something;

    requestAddress(urlCombined);


    //do something
    if (condition met) {
        return true;
    } else {
    return false;
    }
}

if (isValid()) {
    do something
}

2 个答案:

答案 0 :(得分:1)

您可以向requestAddress函数发送回调函数,并在请求完成后调用它。根据需要将参数发送回它 - 我已经将回调函数创建为isValid内部的匿名函数,但如果您愿意,它可以是一个单独的命名函数。

function requestAddress(urlCombined, callback) {
    request(urlCombined, function (error, response, body) {
        a = JSON.parse(body);    
        c = addressInfo.status;
        callback(error, response, body);
    });
}

function isValid() {
    // Retrieve address from input
    addressGet = $('#address').val();

    // Combine url to get address's information
    var urlCombined = 'websitehere' + something;

    requestAddress(urlCombined, (error, response, body) => {
      //do something
      if (condition met) {
        return true;
      } else {
        return false;
      }
    });
}

if (isValid()) {
    do something
}

答案 1 :(得分:0)

您可以尝试通过两次回调来解决它。

或者只是尝试新语法$(window).on("unload",function(){ localStorage.clear(); });

onunload