如何让延迟处理程序将值返回给调用函数?

时间:2013-01-10 14:55:21

标签: javascript dojo deferred

请看下面的示例,了解我要做的事情:

//Caller.js
callingFunction : function (...)
{
    var a = new Assistant();
    console.log("This object has been returned ", a.showDialog(...));
},

//Assistant.js
showDialog : function (...)
{
    deferred.then(lang.hitch(this, this._showDialog));
    //I want to return someObject to callingFunction
},

_showDialog : function (dialogData)
{
    ...
    ...
    return someObject;
},}

1 个答案:

答案 0 :(得分:2)

由于它被推迟,因此在该功能结束之前没有任何东西可以返回。相反,将回调传递给showDialog并让它在延迟触发时调用该回调。


重新评论以下内容:

  

你知道我会如何添加回调吗?

自从我使用Dojo以来已经,因此它可能具有缩短功能的功能,但通常的方式如下:

showDialog : function (callback)
{
    deferred.then(lang.hitch(this, function() {
        this._showDialog();
        callback(/*...whatever it is you want to pass back...*/);
    }));
},