连接到 RESTful API 时如何正确处理 can-connect 错误

How to handle can-connect errors correcly when connecting to a RESTful API

我已成功加载数据并保存数据。但无法理解所需的错误处理方案。 当一切顺利时,我收到发送的相同对象,但具有额外的属性 _saving (false).

当出现问题时,例如尝试存储字符串而不是数字,我会得到:

  1. 错误请求(控制台错误,不希望这样)
  2. 响应对象(可能对显示错误有用)
  3. "Uncaught (in promise)"错误

示例:

代码:
this.save()
    .then(function(result) {
    console.log('ok1', result);
}).catch(function() {
    console.log('errorHandler1');
});

我一直在尝试使用 catch on promises,遵循以下准则: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch 但一点运气都没有。

只需将 p1.then 更改为 thisObjectThatIWantToSave.save.then 应该可以,但没有。

p1.then(function(value) {
    console.log(value); // "Success!"
    throw 'oh, no!';
}).catch(function(e) {
    console.log(e); // "oh, no!"
}).then(function(){
    console.log('after a catch the chain is restored');
}, function () {
    console.log('Not fired due to the catch');
});

同样,当数据正确时它仍然存储信息,我看到的问题是我没有工具来确定数据何时正确存储或避免触发可以正确存储的错误已处理。

我正在使用

关于错误处理...

Bad request (error on the console, don't want that)

无法阻止控制台上的错误。这是 chrome 所做的事情。

The response object (might be usefull to show an error)

您可以在 can-stache 中阅读 reason 以了解拒绝,例如 {{promise.reason}}

"Uncaught (in promise)" error

我不确定为什么会抛出这个,因为你的 catch 被击中了。如果将其更改为:

this.save()
    .then(function(result) {
    console.log('ok1', result);
},function() {
    console.log('errorHandler1');
});

你有同样的行为吗?