如何从变量内部调用函数获取回调

时间:2017-05-11 02:43:14

标签: javascript jquery callback

我有一些类似于以下内容的Javascript代码:

var Requests = {
  get: function(search) {
    // HTTP request happens, returns data.
  }
}

我正试图在其他地方调用它,如下所示:

Requests.get('thing');

虽然这是返回undefined,因为它没有等待http请求结果。我想知道如何推迟这个请求,直到它成功,或以某种方式检查调用代码中的回调。谢谢!

2 个答案:

答案 0 :(得分:0)

你需要一个承诺。 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

答案 1 :(得分:0)

该函数可以返回一个承诺:

    Action closeAction = new AbstractAction(){
        public void actionPerformed(ActionEvent e){
            dispose();
        }
    };

    KeyStroke esc = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE,0);
    getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(esc, "closex");
    getRootPane().getActionMap().put("closex", closeAction);

    KeyStroke ctrlW = KeyStroke.getKeyStroke("control W");
    getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(ctrlW, "close");
    getRootPane().getActionMap().put("close", closeAction); 

在"然后"在Promise对象的方法中,您需要传递解析或拒绝promise时使用的两个函数。

有关Promises的更多信息:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise

相关问题