【发布时间】:2016-08-23 12:16:28
【问题描述】:
我需要一个接一个地执行 2 个函数,函数“A”中的内容在函数“B”中的内容执行之前完全完成...
我找不到不使用 setTimeout 的示例……这很奇怪……
我有以下示例(from here),它应该工作吗?我如何测试它是否有效?我可以用什么虚拟代码来模拟“//用 SharePoint JSOM 做事”这部分需要 5 秒到 30 秒,比如说。
var a = function() {
var defer = $.Deferred();
//do stuff with SharePoint JSOM
console.log('a() called');
return defer;
};
var b = function() {
var defer = $.Deferred();
console.log('b() called');
return defer;
};
a().then(b);
【问题讨论】:
-
是的,只需将
setTimeout用作假人。 -
如果
b不做任何异步操作,它不应该返回延迟(或承诺)。then也适用于同步回调。 -
根据我测试和阅读的内容,您不能将 setTimeout 用作虚拟对象,因为它根本不会停止调用代码。而且我不能使用预设延迟。
-
是的,延迟或 JSOM 也不会停止调用代码,这就是它们的重点。
-
嗨,我不是说完全停止代码。只需暂停函数 B 的执行,直到函数 A 执行,(不使用 setTimeout ),你是说这不是 Jquery deferred/promises 的预期目的吗?
标签: javascript jquery promise jquery-deferred