Backbone:是否可以同时进行多次提取

时间:2013-01-02 19:16:01

标签: javascript backbone.js

我试图一次调用多个fetch(),目前我在运行时:

function notWorking(){
    collection1.fetch()
    collection2.fetch()
    collection3.fetch()
    collection4.fetch()
}

如果我只有fetch()一个并且在另一个fetch()上返回500内部错误 但是,如果我这样做:

function working(){
    collection1.fetch({
       success:function(){
            collection2.fetch({
               success:function(){
                    collection3.fetch({
                       success:function(){
                            collection4.fetch()
                       }
                    })
               }
            })
       }
    })
}

有效,但看起来像是一种可怕的做法,这是一次拉出多个fetch()的更好方法吗?

(后端是使用带有sinatra的ruby和数据映像器,它的价值是什么)

1 个答案:

答案 0 :(得分:0)

正如福伊索斯所说,你的核心问题是服务器端问题。 Backbone(甚至在jQuery中)没有任何东西可以阻止你一次进行多次抓取。

话虽如此,如果你坚持使用服务器端实现,你至少可以利用Backbone的fetch返回jQuery的ajax返回结果(这本身就是一个“延期“对象”:

function working(){
    collection4.fetch().complete(
        collection3.fetch().complete(
            collection2.fetch().complete(
                collection.fetch()));
}

或者你可以通过fetch将适当的选项传递给jQuery来实际使AJAX请求同步:如下所示:

function working(){
    collection.fetch({async: false});
    collection2.fetch({async: false});
    collection3.fetch({async: false});
    collection4.fetch({async: false});
}