用普通的 JavaScript Promise 替换 $.Deferred

Jam*_*ton 2 jquery promise ecmascript-6

我正在开发一个 Chrome 扩展,它没有理由使用 jQuery,但确实有理由使用meteor-ddp.js脚本,该脚本仅使用 jQuery 来访问该$.Deferred功能。它只使用三种方法:reject,resolvepromise

var conn = new $.Deferred();
//...
conn.reject(err);
//...
conn.resolve(data);
//...
return conn.promise();
Run Code Online (Sandbox Code Playgroud)

现在 JavaScript 有自己的原生 Promise 对象,似乎没有必要包含至少 69 KB 的 jQuery slim.min.js 来提供一个 Promise 功能。

如果有人比我对 jQuery 和 promises 有更多经验,可以解释该$.Deferred功能是如何工作的,以及如何用本机 Promises 替换它,那就太好了。

Ale*_*lex 6

这相当于您在 es6 中的代码示例:

return new Promise((resolve, reject) => {
  // ...
  reject(err);
  // ...
  resolve(data);
});
Run Code Online (Sandbox Code Playgroud)