Как получить отложенный обработчик для возврата значения в вызывающую функцию?
Посмотрите на приведенный ниже пример, чтобы понять, что я пытаюсь сделать:
//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...*/);
}));
},