gpt4 book ai didi

javascript - 同步 Backbone 响应

转载 作者:行者123 更新时间:2023-11-28 19:01:05 25 4
gpt4 key购买 nike

首先,我对 Backbone 的了解非常有限,目前,我正在尝试将实现添加到一些我没有创建的代码中。

我的问题如下:

我有一个通过单击按钮即可呈现的集合。现在,我们正在网站上设置一些权限,因此有时我得到的响应是 401。

我目前能够获得响应,问题是我不知道如何将其附加到同步事件,因此如果我在调用 API 时收到 401,它不应该呈现任何内容。

我认为查看代码将有助于澄清我的问题:

this.addressBook = new (Backbone.Collection.extend({
url: url,
model: Backbone.Model.extend({
idAttribute: 'ID'
}),

parse: function(data) {

return data;
}
}))();

this.addressBook.on('sync', this.renderAddresses, this);
this.addressBook.fetch();

所以我找到了几种从 fetch 获取状态代码的方法,但在这种特殊情况下,我需要在同步事件调用 this.renderAddress 之前获取状态代码,并给出响应的状态,继续并呈现我的 View 或仅显示一条消息,指出访问被拒绝。

抱歉,如果我不够清楚。

提前致谢。

最佳答案

这是主干文档的重要部分:

Whenever a model or collection begins a sync with the server, a "request" event is emitted. If the request completes successfully you'll get a "sync" event, and an "error" event if not.

这意味着如果收到 401,则不应触发 sync 事件,而应触发 error 事件。

您可以通过监听所有不同的事件(包括所有可用参数)在代码中对此进行测试:

this.listenTo(yourCollection, 'request', function(collection, resp, options) {
console.log('Request: ', resp);
});
this.listenTo(yourCollection, 'error', function(collection, resp, options) {
console.log('Error: ', resp);
});
this.listenTo(yourCollection, 'sync', function(collection, resp, options) {
console.log('Sync: ', resp);
});

因此,您应该能够仅监听 error 事件来显示自定义错误消息:

this.listenTo(yourCollection, 'error', function(collection, resp) {
if (resp.status === 401) {
console.warn('401: Unauthorized');
} else {
// do something else
}
});

关于javascript - 同步 Backbone 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32531803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com