我有一个过程,我必须向服务器发送 ajax 请求,但需要在 ajax 请求开始之前停止调度程序,然后在请求完成后重新启动调度程序。
我使用以下代码完成了这项工作:
scheduler.stop()
.done(function () {
setQuestionStatus().done(scheduler.start);
});
不过好像应该有更简单的写法,比如:
scheduler.stop().then(setQuestionStatus).then(scheduler.start);
我的问题是,以这种方式编写时,一旦 scheduler.stop 已解决, setQuestionStatus 和 scheduler.start 都会被调用调用,而不是在链中的每个项目已解决之后。
谁能告诉我在第二个例子中我做错了什么?
供您参考, scheduler.stop 和 setQuestionStatus 都使用以下模式返回一个承诺:
var setQuestionStatus = function(){
return $.Deferred(function (def) {
// Do stuff
def.resolve();
}).promise();
}