将参数传递给$ .then函数

Gre*_*egg 6 jquery jquery-deferred

我有以下内容:

$(".remove-item").click(function(e) {
    e.preventDefault();

    var url = $(this).attr('href');
    var id = $(this).data("id");
    $.when(removeItem(url))
      .then(removeItemResponse(id));
});

var removeItemResponse = function(data, id) {
   console.log(data);
   console.log(id);
};

var removeItem = function(url) {
  return $.post(url);
};
Run Code Online (Sandbox Code Playgroud)

以上是行不通的,因为在处理ajax请求之后我在日志中什么也得不到,我知道它与我如何处理removeItemResponse中的参数有关.我需要使用来自ajax帖子的返回数据,但也传递我在click函数中检索到的id.

Jas*_*n P 12

removeItemResponse(id)正在执行该函数,并且您没有传递第一个延迟的结果.试试这个:

.then(function(data) { removeItemResponse(data, id) });
Run Code Online (Sandbox Code Playgroud)

done() 也适用于:

.done(function(data) { removeItemResponse(data, id) });
Run Code Online (Sandbox Code Playgroud)

您可以简化和处理这样的故障:

removeItem(url)
    .done(function(data) { removeItemResponse(data, id) });
    .fail(function(result) { /* do something else */ });
Run Code Online (Sandbox Code Playgroud)