首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RequireJS:在回调中定义

RequireJS:在回调中定义
EN

Stack Overflow用户
提问于 2012-05-06 09:49:08
回答 1查看 2K关注 0票数 3

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

a.js:

代码语言:javascript
复制
require(['b'], function(b){
  console.log(b);
});

b.js:

代码语言:javascript
复制
define({'foo':'bar'});

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

b.js:

代码语言:javascript
复制
setTimeout(function(){
  define({'foo':'bar'});
}, 1000);

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

怎么了?

EN

回答 1

Stack Overflow用户

发布于 2012-05-08 17:25:04

我认为任何延迟或延迟都应该发生在定义函数中,或者您可以使用如下回调模式:

代码语言:javascript
复制
//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的延迟答复。

希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10469605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档