如何使与jquery延迟对象一起工作的函数表现得像同步函数
How do I make a function that works with a jquery deferred object behave like a synchronous function?
我有一个API,它从一个延迟对象返回一个promise。
问题是调用者的行为应该是同步的。作为向团队展示的一个选项,我将如何使调用函数同步运行?
var foo = function() {
var promise = returnsPromise();
promise.done().fail();
// insert magic here
// function returns when either done() or fail() is completed.
}
如果您真的需要等待延迟的问题在那一点上得到解决,只需像没有jQuery:一样执行即可
while (!promise.isResolved() && !promise.isRejected()) { }
在JS中没有办法创建等待异步结果的阻塞调用。您必须更改调用者以进行回调,而不是
您可以在延迟对象完成或失败后使用.always()
执行某些操作。它是"done-fail-always"
,与"success-error-complete"
和"try-catch-finally"
同义
var foo = function(callback) {
var promise = returnsPromise();
promise.done().fail().always(function(){
//do magic
callback();
});
}
然后你调用foo类:
foo(function(){
//the magic you want done after a done or fail
});
相关文章:
- javascript函数同步
- javascript函数中的异步与同步.(Node.js)
- JavaScript 函数同步执行
- Node.js和同步API函数
- 如何在异步函数与Deferredjquery之间同步
- Chrome扩展和Angular:我可以把Chrome.runtime.sendMessage变成一个同步函数吗
- $resource 'get' 函数如何在 AngularJS 中同步工作
- 将同步函数包装到承诺中的最佳方法是什么?
- 异步函数调用是否可以在两个同步语句之间完成
- 如何制作add的回调函数或同步制作此脚本
- 使AJAX“get”函数同步/如何获得结果
- Javascript匿名函数同步
- javascript中的函数同步
- 为什么Javascript显示带有setTimeout函数同步和异步的输出
- 如何使函数同步
- 如何调用angular's函数同步返回角度之外的函数结果
- JavaScript函数同步抓取HTML和JS
- 如何使循环中的函数同步运行
- j查询函数同步调用
- 在Javascript中,一般来说,如何使异步函数同步