什么是ES6承诺相当于jQuery Deferred's 'always ' ?
What is the ES6 Promise equivalent of jQuery Deferred's 'always`?
我有如下内容:
getUser("foo").then(handleSuccess, handleError).always(tidyUp);
getUser
返回一个jQuery Deferred对象。
我从本文中了解到,我可以使用Promise.resolve
将Deferred对象转换为本机Promise,因此我可以编写
Promise.resolve(getUser("foo"))
.then(handleSuccess)
.catch(handleError)
Promise API没有提供always
方法,所以我想知道应该如何处理。
是否如下所示?
Promise.resolve(getUser("foo"))
.then(handleSuccess)
.then(tidyUp)
.catch(handleError)
.then(tidyUp)
我认为以下是你要找的:
Promise.resolve(getUser("foo"))
.then(handleSuccess, handleError)
.then(tidyUp)
tidyUp将始终被调用。完整示例参见下面的jsbin: http://jsbin.com/lujubu/edit?html,js,console,output
使用always
函数作为resolve
和 reject
的处理程序,以确保它将始终被调用。
function getUser(result) {
switch (result) {
case 'good':
return Promise.resolve();
case 'bad':
return Promise.reject();
case 'ugly':
return new Promise(() => { throw new Error() })
}
}
function handleSuccess() { console.log('success') }
function handleError() { console.log('error') }
function tidyUp() { console.log('all tidy now') }
Promise.resolve(getUser('good'))
.then(handleSuccess)
.catch(handleError)
.then(tidyUp, tidyUp);
Promise.resolve(getUser('bad'))
.then(handleSuccess)
.catch(handleError)
.then(tidyUp, tidyUp);
Promise.resolve(getUser('ugly'))
.then(handleSuccess)
.catch(handleError)
.then(tidyUp, tidyUp);
// success
// error
// error
// all tidy now
// all tidy now
// all tidy now
Promise API Reference
相关文章:
- JQuery Deferred Ajax,将结果保存在调用对象中
- 如何制作Deferred对象的数组
- Working with Ajax Promises / Deferred
- Jasmine中返回Deferred的模拟嵌套函数
- jQuery Deferred and promise-错误:对象没有't支持属性或方法'然后'
- 强制jQuery Deferred等待Ajax在“”中完成;那么“;处理程序
- 如何用JQuery$.Deferred重写AJAX调用
- 为什么我们在javascript中使用Deferred()
- Phantomjs page.evaluate and q deferred issue
- deferred.resolve()获胜't决心
- jQuery deferred method and ajax beforeSend()
- 我可以将Promises传递给jQuery.when(),还是只传递Deferred
- Javascript then() 链接 - Deferred 第二个 then() 对应于哪个
- jquery,在html5中使用带有地理位置的deferred
- jQuery Deferred/Promises with many getJSON
- jQuery $.Deferred with window.top.postMessage()
- 角度等价于 jQuery deferred.always() 回调
- deferred.always() 过早触发
- 什么是ES6承诺相当于jQuery Deferred's 'always ' ?
- jQuery的区别Deferred then和always