为什么jQuery的承诺有一个done(),但是Mozilla记录的Javascript承诺不是?如果我想在JS中有一个done()怎么办?

Mel*_*ssa 5 javascript jquery promise angularjs

Mozilla的JavaScript文档的Promises(参见API页面)和jQuery的Promises(参见API页面)之间有什么区别?

Mozilla的承诺似乎只有两种方法:然后捕获.jQuery的承诺似乎有更多的方法,包括:then,done和fail.(从这里)

为什么Mozilla上的JS API没有done()?如果我想在JavaScript中使用done()功能怎么办?我该怎么办?

Ste*_*ell 3

Mozilla 的 javascript Promise 基于ES6 标准,而 jQuery Promise 是在 ES6 发布之前创建的。

根据我对 jQuery 文档的阅读,ES6then相当于 jQuery done

实际上有一大堆 Promise 库,但对我来说 ES6 是最容易理解的。您只需要“then”和“catch”,并且很容易将它们链接在一起形成一系列操作。再加上Promise.all并行任务,您需要的 99% 都可以满足。

return doSomething().then(function(result) {
  return doSomethingElse(result);
}).then(function(secondResult) {
  return doThirdSomething(secondResult);
}).catch(function(err) {
  console.log(err);
}).then(function(finalResult) {
  // a then after a catch is like a "finally" or "always"
  return finalResult;
}); 
Run Code Online (Sandbox Code Playgroud)

jQuery 确实支持但 ES6 中不支持的一些东西是某种“进步”解决方案。