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请帮忙?
答案 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的更多详情。