我需要一个接一个地执行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);
答案 0 :(得分:4)
简单地使用promise
( vanilla JS )并将其与then
链接起来。
function a() {
return new Promise(function(resolve) {
console.log("wait two seconds ...");
// this timeout is only here for demo purpose ;)
setTimeout(function() {
console.log("A");
resolve();
}, 2000);
});
}
function b() {
console.log("B");
}
a().then(b);
如果你想使用jQuery deffered
几乎一样。
function a() {
var defer = $.Deferred();
console.log("wait two seconds ...");
// this timeout is only here for demo purpose ;)
setTimeout(function() {
console.log("A");
defer.resolve();
}, 2000);
return defer;
}
function b() {
console.log("B");
}
a().then(b);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>