Как получить отложенный обработчик для возврата значения в вызывающую функцию?

Посмотрите на приведенный ниже пример, чтобы понять, что я пытаюсь сделать:

//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 ответ

Решение

Поскольку он отложен, ему нечего возвращать до завершения этой функции. Вместо этого передайте обратный вызов в showDialog и пусть он вызывает этот обратный вызов, когда отложенное срабатывает.


Re ваш комментарий ниже:

Вы знаете, как я мог бы добавить к этому обратный вызов?

Прошло много лет с тех пор, как я использовал Dojo, поэтому он может иметь функции, чтобы сделать это короче, но обычный способ выглядел бы так:

showDialog : function (callback)
{
    deferred.then(lang.hitch(this, function() {
        this._showDialog();
        callback(/*...whatever it is you want to pass back...*/);
    }));
},
Другие вопросы по тегам