以下代码中的Promise工作正常,Ajax请求(load()
jQuery-function)也可以工作:
changeFragment(newFragment, fragmentUrn) {
new Promise((resolve, reject) => {
this.$MainContent.load(fragmentUrn, (response, status, xhr) => {
//status === 'error' ? reject(xhr) : resolve();
console.log(status == 'success');
if (status === 'success'){
console.log('resolve');
resolve();
}
if (status === 'error') {
console.log('reject');
reject(xhr);
}
});
}).then(() => {
console.log('then');
let newFragment = newFragment.createInstance();
newFragment.initialize();
}).catch((xhr) => {
console.log('Why!?');
console.error(`Error : ${xhr.status} ${xhr.statusText}`);
});
}
然而,在then()
之后,某种方式catch()
也被调用了。我在控制台中输出了以下内容:
true
resolve
then
Why!?
Error: undefined undefined
答案 0 :(得分:0)
你需要做这样的事情
Promise.resolve() .then(function(){return Function1()。catch(errorHandler1);})
答案 1 :(得分:-1)
我认为,因为你没有回复承诺,所以试着回复承诺,而不仅仅是用新的'来宣传它。
'然后'需要等待将被退回的承诺