什么必须deleteItemreturn?

What must deleteItem return?

deleteItem 的文档说:

If deletion is asynchronous, method should return jQuery promise that will be resolved when deletion is completed.

这到底是什么意思?一定要承诺 return 任何数据吗?

下面的方法行得通吗?

deleteItem: function(item) {
   return $.ajax("/api/members/", {
             method: "DELETE",
             data: { item: item},
             error: (err) => { console.log(err);},
             success: (result, status, jqXHR) => {},
         })
     }

以上在测试中对我有用,但我不确定如果 Ajax 调用成功就忽略是否正确。

如果您的业务逻辑可以容忍删除项目的失败,那么不处理它也没关系。

大多数情况下不是这样的,你应该处理删除item失败的情况,并适当的告诉用户这个失败,可以优雅的留言让他稍后再试。

关于"what must deleteItem return?":

成功时应该 return 状态码为 200,主体为空。 它应该 return 一个适当的 http 状态代码,带有适合失败原因的错误正文。 例如:如果您尝试删除的项目不存在,则状态代码错误 422(不可处理的实体)预计为 returned.

例如,如果您无权删除此项目,则应 return 编辑 403 状态代码错误。

总而言之,是的,您应该处理错误并告知用户。

您的代码应该类似于:

deleteItem: function(item) {
   return $.ajax("/api/members/", {
             method: "DELETE",
             data: { item: item},
             error: (jqXHR , err) => { 
                if(jqXHR.status == 403){
                    console.log("handle forbidden error code);
                    alert("You are not authorized to delete this item, check 
                    with your manager...");
                }
              },
             success: (result, status, jqXHR) => {},
         })
     }