如何从Backbone的响应中访问responseText?

时间:2015-05-09 06:20:32

标签: javascript backbone.js response browserify

    var $ = require('jquery'),
        Handlebars = require('handlebars'),
        Backbone = require('backbone'),
        mainJs = require('./main');


var services = {



    authenticationservice: function(collections) {
         var jsonreturn;

         var api_token = mainJs.get_api_token();


        jsonreturn = collections.fetch({

        headers: {'Authorization': 'Bearer ' + api_token.access_token},
        success: function (collection, response, options) {

           var responsejson = JSON.parse(response.responseText);
           return responsejson;

        },

        error: function (collection,response,options){

            var errorjson = JSON.parse(response.responseText);
            //alert(errorjson.error_description);
             return errorjson;

        }
    });

        return jsonreturn; 



    }

};




module.exports = services;

如何从jsonreturn访问responseText请帮忙?

1 个答案:

答案 0 :(得分:1)

由于collections.fetch在行为上是异步的,因此您应该将jQuery延迟作为对authenticationservice函数的调用。参考下面的代码

authenticationservice : function(){
  var def = $.Deferred();
  ...
  //Somewhere in success
  success: function(...){
    def.resolve(responsejson);
  }
  ...
  //Somewhere in error
  error:function(...){
    def.reject(errorjson);
  }
  ...
  return def;
}

现在,您调用此服务的位置必须对齐以处理下面的承诺

service.authenticationservice().then(
  function(responsejson){
    //Do processing in case of success.
  },
  function(errorjson){
    //Do processing in case of failure
  }
);

有关JQuery Deferred的更多详情。