使用JQuery Promises传递参数

时间:2015-06-14 20:18:08

标签: javascript jquery asynchronous

有人可以使用jQuery Promises提供更好的方法来执行以下操作:

问题是我想在ajax返回的数据旁边传递额外的参数,并在另一个请求中再次发布之前修改返回的数据。

var obj= $(this);

$.get(
  "fetch_data1", 
  {},
  function(data){
    callback1(data, obj)
  });

function callback1(data, obj){
  var anotherParam = "test"

  $.get(
    "fetch_data2", 
    {"data":data, "q":obj.text()},
    function(data2){
      callback2(data, obj, anotherParam)
    });
}

function callback2(data2, obj, another_Param){
  obj.text(data2 + another_Param);
}

2 个答案:

答案 0 :(得分:1)

var sv = new google.maps.StreetViewService(); 是一种速记,相当于:

panorama = new google.maps.StreetViewPanorama(document.getElementById('pano'));

使用完整功能,您可以提供一个上下文对象,并在回调函数中使用它,如下所示:

jQuery.get

您的上下文对象可以像您需要的那样精心制作,包含您需要传递给回调函数的任何数据。

答案 1 :(得分:0)

是不是deferred.then()(this)你在寻找什么?您的代码可以重写为以下内容:

var obj= $(this);

$.get("fetch_data1_url")
.then(function(data1){
    return callback1(data1, obj);
})
.then(function(data2) {
    var anotherParam = "test";

    callback2(data2, obj, anotherParam);
});

function callback1(data1, obj){
    return $.get(
        "fetch_data2_url", 
        { "data": data1, "q": obj.text() },
    );
}

function callback2(data2, obj, another_Param){
    obj.text(data2 + another_Param);
}