在对象定义函数中使用了即时变量

时间:2014-07-21 19:10:41

标签: javascript

我需要在对象定义函数中使用即时变量。

我需要在函数

之外使用Result变量
function Request(params,type,url){

        var loginReq = Titanium.Network.createHTTPClient();
        loginReq.open(type,url);
        loginReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
        loginReq.setRequestHeader("enctype", "multipart/form-data");
        loginReq.setRequestHeader("Content-Type", "image/png;charset=utf-8");
        loginReq.send(params);
        loginReq.onload = function()
        {
            var json = this.responseText;
            var Result = JSON.parse(json);
        };
        return Result;
  };

exports.Request = Request;

我需要返回结果或在范围之外使用它。

1 个答案:

答案 0 :(得分:1)

您需要使用回调或promise library

使用回调

function Request(params,type,url,callback){
    //...
    loginReq.onload = function() {
        var json = this.responseText;
        var Result = JSON.parse(json);
        callback(Result);
    };
};

//Somewhere else 
Request(/**/,/**/,/**/,function(result){
    //use result
});

使用Q等承诺库

var Q = require("q");
function Request(params,type,url,callback){
    var deferred = Q.defer();
    //...
    loginReq.onload = function() {
        var json = this.responseText;
        var Result = JSON.parse(json);
        deferred.resolve(Result);
    };
    return deferred.promise;
};

//Somewhere else
Request(/**/,/**/,/**/).then(function(result){
   //use result
});