[英]How to get callback from calling function inside variable
我有一些類似於以下代碼的Javascript代碼:
var Requests = {
get: function(search) {
// HTTP request happens, returns data.
}
}
我試圖在其他地方調用它,如下所示:
Requests.get('thing');
盡管這返回的是undefined,因為它沒有等待http請求的結果。 我想知道如何才能將此請求推遲到成功為止,或者以某種方式檢查調用代碼中的回調。 謝謝!
你需要一個承諾。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise
var Requests = {
get: function(search){
return new Promise(resolve,reject){
//if it does what you want
if(data) resolve(data)
else reject(error)
}
}
}
接着
Requests.get('thing').then('do something else')
另一個選項是使用await / async,但尚不完全支持。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
該函數可以返回一個promise:
var Requests = {
get: function(search) {
return new Promise(function(resolve, reject){
// call resolve in case of success, and reject in case of error
})
}
}
Requests.get('thing').then(
function(response){
// success
},
function(error){
// something went wrong
}
);
在Promise對象的“ then”方法中,您需要傳遞在解決或拒絕Promise時使用的兩個函數。
有關Promises的更多信息: https : //developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.