簡體   English   中英

如何從變量內部的調用函數獲取回調

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

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