繁体   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