javascript - RequireJS:在回调中定义

标签 javascript callback requirejs requirejs-define

在我的模块中,我想推迟“定义”调用,但 RequireJS 在文件加载后运行回调,而不是在“定义”时运行回调...例如:

a.js:

require(['b'], function(b){
  console.log(b);
});

b.js:

define({'foo':'bar'});

这与预期的写入对象 {foo:bar} 一样工作。 但是如果我将“define”移至延迟函数:

b.js:

setTimeout(function(){
  define({'foo':'bar'});
}, 1000);

然后console.log(b)写入“null”。

出了什么问题?

最佳答案

我认为任何延迟或推迟都应该发生在定义函数内,或者您可以使用像这样的回调模式:

//a.js
require(['b'], function(b){
  b.getData(
    function(data) {
        console.log(data);
    }
  );
});

//b.js
define(function(){
    this.getData = function(callback) {
        setTimeout(function(_callback){
            return function() {
                _callback({'foo':'bar'});
            }
        }(callback), 1000);     
    }
    return this;
});

使用此模式,您可以在 a.js 中设置回调函数来处理 b.js 的延迟响应。

希望这对您有帮助。

关于javascript - RequireJS:在回调中定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10469605/

相关文章:

javascript - 恢复 console.log()

javascript - 使用简单示例了解 Javascript 回调

path - 相对路径不适用于路径

google-maps - 当谷歌地图超时时,如何使用 RequireJS 捕获加载错误?

javascript - 如何让 Visual Studio Intellisense 显示 javascript 回调中的属性?

javascript - FullCalendar 只允许一个可选槽位

javascript - 如何使用 php 从数组中转义正则表达式特殊字符以在 javascript 中使用

javascript - 使用 Function.prototype.call 作为回调

javascript - 你能等待 javascript 回调吗?

javascript - 无法创建主干 View