backbone.js中.保存()的响应/请求对象

j2datikz  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(146)

在下面的函数中,如您所见,在.保存()部分没有响应对象,我想知道如何声明一个响应对象以获取返回值。

$.when(
            _this.formWebsitePart.save({
                success: function () {
                    console.log("website saved")
                    _this.formWebsitePart.isSaved = true;
                }
            }),
            _this.formAddressPart.save({
                success: function () {
                    console.log("address saved")
                }
            })
        ).then(function () {
                _this.signupSuccess();
            }
        )
xzabzqsa

xzabzqsa1#

如果您的.save()真的返回了一个jqXHR对象,那么您可能需要类似于下面的代码:

_this.saveFormParts = function() {
    if(!_this.formWebsitePart.jqXHR) {
        _this.formWebsitePart.jqXHR = _this.formWebsitePart.save().then(function(response) {
            console.log("website saved");
            return response || null;
        });
    }
    if(!_this.formAddressPart.jqXHR) {
        _this.formAddressPart.jqXHR = _this.formAddressPart.save().then(function(response) {
            console.log("address saved");
            return response || null;
        });
    }
    return $.when(
        _this.formWebsitePart.jqXHR,
        _this.formAddressPart.jqXHR
    );
}

并且,在适当的情况下:

_this.saveFormParts().then(_this.signupSuccess); // or similar

如果您的.save()没有返回jqXHR对象,那么您需要执行以下操作之一:

  • 编写.save()的承诺版本(首选)
  • 编写.saveFormParts()的承诺版本

用于约定常规回调接口-try this

相关问题