Javascript ES6承诺与jQueryDelivered';s';总是`?
我有如下几点:Javascript ES6承诺与jQueryDelivered';s';总是`?,javascript,jquery,es6-promise,Javascript,Jquery,Es6 Promise,我有如下几点: getUser("foo").then(handleSuccess, handleError).always(tidyUp); getUser返回jQuery延迟对象 据我所知,我可以使用Promise.resolve将延迟对象转换为本机承诺,这样我就可以编写 Promise.resolve(getUser("foo")) .then(handleSuccess) .catch(handleError) 但是,不提供始终方法,所以我想知道应该如何处理它 是这样吗 P
getUser("foo").then(handleSuccess, handleError).always(tidyUp);
getUser
返回jQuery延迟对象
据我所知,我可以使用Promise.resolve
将延迟对象转换为本机承诺,这样我就可以编写
Promise.resolve(getUser("foo"))
.then(handleSuccess)
.catch(handleError)
但是,不提供始终方法,所以我想知道应该如何处理它
是这样吗
Promise.resolve(getUser("foo"))
.then(handleSuccess)
.then(tidyUp)
.catch(handleError)
.then(tidyUp)
我认为以下是您想要的:
Promise.resolve(getUser("foo"))
.then(handleSuccess, handleError)
.then(tidyUp)
tidyUp将永远被称为。有关完整示例,请参见以下jsbin:使用始终函数作为解析和拒绝的处理程序,以确保始终调用它
函数getUser(结果){
开关(结果){
案例“好”:
返回承诺。解决();
“坏”案例:
返回承诺。拒绝();
“丑陋”一案:
返回新承诺(()=>{throw new Error()})
}
}
函数handleSuccess(){console.log('success')}
函数handleError(){console.log('error')}
函数tidyUp(){console.log('all tidy now')}
Promise.resolve(getUser('good'))
.然后(handleSuccess)
.catch(把手错误)
.然后(tidyUp,tidyUp);
Promise.resolve(getUser('bad'))
.然后(handleSuccess)
.catch(把手错误)
.然后(tidyUp,tidyUp);
Promise.resolve(getUser('sugger'))
.然后(handleSuccess)
.catch(把手错误)
.然后(tidyUp,tidyUp);
//成功
//错误
//错误
//现在都收拾好了
//现在都收拾好了
//现在都收拾好了
是的,那就行了,谢谢。你还让我意识到,我也可以只做Promise.resolve(getUser(“foo”))。然后(handleSuccess)。catch(handleError)。然后(tidyUp)
,即保留catch
。