[英]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.