纯 JavaScript $.Deferred

Phi*_*enn 0 javascript promise

如果没有 jQuery,我将如何编写以下内容?

var dfd = $.Deferred()
dfd.done(done)
dfd.resolve()

function done() {
   console.log('done')
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

ale*_*mac 6

使用原生承诺

Promise
  .resolve()
  .then(done);

function done() {
   console.log('done')
}
Run Code Online (Sandbox Code Playgroud)

更新

不带链条:

let op = Promise.resolve();
op.then(done);

function done() {
   console.log('done')
}
Run Code Online (Sandbox Code Playgroud)


Jon*_*lms 5

    function Deferred (){
      let res,rej,p = new Promise((a,b)=>(res = a, rej = b));
      p.resolve = res;
      p.reject = rej;
      return p;
    }
Run Code Online (Sandbox Code Playgroud)

您只需要公开决心和拒绝即可使其发挥作用。