如何在promise中传递参数

时间:2014-12-12 09:14:35

标签: javascript jquery promise

我正在使用这样的承诺:

var restClient = {
    serveRequest: function(rUrl, type, body, rHeaders, rAsync, callback) {  
        var promise = jQuery.ajax({
           url: rUrl,
           type: type,
           data: body,
           headers: rHeaders,
           async: rAsync,
           contentType: "text/plain",
           dataType: "json"
        });

        promise.then(onSuccess, onError);   
    },
    onSuccess: function(data) {
        callback(data);
    },
    onError: function(msg) {
        console.log(msg.responseText);
    }
}

如何在promise.then onSuccess中传递参数(回调)?我想稍后在onSuccess方法中使用它。

1 个答案:

答案 0 :(得分:6)

  

我正在使用这样的承诺

嗯,首先,你不应该。 promises的目的是作为异步函数的结果返回,这样你就不再需要回调参数了。你最好这样做

var restClient = {
    serveRequest: function(rUrl, type, body, rHeaders, rAsync) {  
        var promise = jQuery.ajax({
           url: rUrl,
           type: type,
           data: body,
           headers: rHeaders,
           async: rAsync,
           contentType: "text/plain",
           dataType: "json"
        });
        return promise;
    }
};

restClient.serveRequest(…)的来电者调用.then(…)

  

如何在promise.then onSuccess中传递参数(回调)?

你不需要onSuccess。直接使用

promise.then(callback, function(msg) {
    console.log(msg.responseText);
});
  

我想稍后在onSuccess方法中使用它。

你做不到。它尝试使用callback,但这是serveRequest方法的本地参数 - 因此onSuccess最多只能是一个本地函数,而不是一个方法。< / p>