我正在使用zone.js在一个有角度的环境中工作,因此所有本机es6 Promise已被区域感知Promise覆盖。我有2个名为 save()和 onSaveCb()
的函数save()调用一个名为 validate()的函数,该函数获取文件中已经存在的任何已保存对象的错误代码,因此可以同步完成。
如果hasError()返回true,则从save()返回 Promise.reject(),否则我们将保存请求发送到后端。
现在, onSaveCb()函数是一个异步/等待函数,它在 save()周围具有try-catch块。
问题:
当 save()函数拒绝Promise时,我看到控制台日志错误:
zone.js:682未处理的承诺拒绝:;区域:任务:onClick事件;值:错误:
我尝试了很多方法,将函数包装在一个Promise中,然后拒绝它,但是我仍然看到相同的错误
function save() {
let errorCode = this.validate(); // This is a sync call
if(errorCode !== 0) { return Promise.reject(errorCode);}
return https(url).then(function() {return true});
}
function async onSaveCb() {
try{
let response = await this.save();
alertUI(response);
} catch (response) {
alertUI(response);
}
}
当在catch块中明确编写错误处理时,我不确定为什么会收到此消息。这里的任何帮助都会有所帮助
答案 0 :(得分:0)
您可以导入本机es6 Promise并改为使用它:
const Promise = require('es6-promise').Promise;
或
import {Promise} from 'es6-promise;