Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ES6承诺与jQueryDelivered';s';总是`?_Javascript_Jquery_Es6 Promise - Fatal编程技术网

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