簡體   English   中英

同步運行功能

[英]Running functions synchronously

我將如何使其同步我的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
}

您可以將回調函數發送到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
}

您可以按照自己的想法嘗試通過兩個回調來解決它。

或者只是嘗試新的語法async/await

function requestAddress() {
   return new Promise((resolve, reject) => {
      request(XXX,() =>{   
         // .....
         resolve(c)
      })
   })
}

async function isValid () {
    const res = await requestAddress(XXX)
    if () {} else {}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM