Dojo要求AMD插件不会触发回调

时间:2012-11-04 22:09:02

标签: asynchronous dojo

在下面的插件中,正确调用了load方法,但永远不会触发内部回调:

define("App/FooLoader", [], function() {

    return {

        load: function(id, require, callback) {
            require(["App/Foo"], function(foo) {
                callback(foo);
            });

        }
    }
});

有了上述内容,我一直希望包括在内,如下:

// in Bar.js
require(['App/Fooloader!'], function(foo) { // do stuff with foo });

这:

  1. App/FooLoader已加载,load方法已执行
  2. App/Foo已加载,内部回调已执行
  3. App/FooLoader正文回调是foo加载App/Foo的结果。
  4. 然而,只有(1)发生,回调(2)和(3)永远不会发生。怎么样?

1 个答案:

答案 0 :(得分:1)

它对我有用,如下所示:

define("App/Foo", [], function() {
    return 'bar';            
});
define("App/FooLoader", [], function() {
    return {
        load: function(id, require, callback) {
            console.log('inside load', arguments);
            require(["App/Foo"], function(foo) {
                console.log('inside require, foo=', foo);
                callback(foo);
            });
        }
    }
});

require(["App/FooLoader!"], function(fooload) {
  console.log('fooloaded', fooload);
})​

我创建了这个JSFiddle来演示:http://jsfiddle.net/fMR3Z/1/

也许你的文件结构有错误?