zone.js 承诺即使使用 catch 块也会返回未处理的承诺拒绝错误

问题描述 投票:0回答:2

我正在使用 zone.js 开发一个有角度的环境,因此所有本机 es6 承诺都已被区域感知承诺覆盖。我有 2 个函数,称为 save()onSaveCb()

save() 调用一个名为 validate() 的函数,该函数获取文件中已存在的任何已保存对象的错误代码,以便同步完成。

如果 hasError() 返回 true,我们从 save() 返回 Promise.reject(),否则我们向后端发送保存请求。

现在,onSaveCb()函数是一个异步/等待函数,它在save()周围有一个try-catch块。

问题:

当 Promise 被 save() 函数拒绝时,我看到控制台日志错误:

zone.js:682 未处理的 Promise 拒绝:;区域: ;任务:onClick 事件;值: 错误:

我尝试了很多方法,将函数 save 包装在一个承诺中,然后拒绝它,但我仍然看到相同的错误

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 块中明确编写错误处理时,我不确定为什么会收到此消息。这里的任何帮助都会有帮助

angular promise zone
2个回答
0
投票

您可以导入本机 es6 Promise 并使用它:

const Promise = require('es6-promise').Promise;

import {Promise} from 'es6-promise;


0
投票

我向 zone.js 开发人员报告了同样的问题 https://github.com/angular/zone.js/issues/954。他们回答说他们无法复制它。

© www.soinside.com 2019 - 2024. All rights reserved.