我有一个名为handleWidgetDrop的函数。在函数中我调用另一个函数insertBlankWidget,它在返回promise对象时执行某个函数。问题是在函数调用insertBlankWidget之后handleWidgetDrop中的代码在promise对象中的代码之前执行。在调用insertBlankWidget()之后的代码之前执行promise对象成功之后,如何撤消此操作并执行函数中的代码。
handleWidgetDrop:function (){
//some lines
this.insertBlankWidget();
//Lines after insertBlankWidget call
}
insertBlankWidget:function(){
var promise=this.getWidgetModel();
promise.done(function(){
//code which must be executed before Lines after insertBlankWidget
});
}
答案 0 :(得分:3)
只需在承诺上链接.done
函数即可。但要做到这一点,您必须从insertBlankWidget
insertBlankWidget:function(){
var promise=this.getWidgetModel();
promise.done(function(){
//code which must be executed before Lines after insertBlankWidget
});
return promise;
}
然后您就可以链接到handleWidgetDrop
:
handleWidgetDrop:function (){
//some lines
this.insertBlankWidget().done(function(){
//Lines after insertBlankWidget call
});
}
答案 1 :(得分:0)
您可以使用所谓的回调函数。
修改insertBlankWIdget
以使其接受函数作为参数,并在承诺完成时调用该函数。
insertBlankWidget:function( callback ){
var promise=this.getWidgetModel();
promise.done(function(){
//code which must be executed before Lines after insertBlankWidget
callback();
});
}
然后是handleWidgetDrop
handleWidgetDrop:function (){
//some lines
this.insertBlankWidget(
function()
{
//Lines after insertBlankWidget call
}
);
}