编辑代码

/*  let fn = new Promise(function(resolve, reject) {
    testAsync(resolve);
})

fn.then(function(res) {
    console.log(res);
}).then(function(res) {
    console.log(res);
})

function testAsync(resolve) {
    setTimeout(function() {
        resolve('testAsync');
    });
}

  */

 function SelfPromise(fn) {
    this.cbs =[];
    var resolve = (res) => {
       setTimeout(() => {
            this.data = res;
            console.log(this.cbs.length);
            this.cbs.forEach(cb => {
               cb(this.data);
            });
       })
    }
    fn(resolve.bind(this));
} 

SelfPromise.prototype.then = function(fn) {
    let seft = this;
    return new SelfPromise((resolve) => {
        seft.cbs.push(() => {
          const res = fn(seft.data);
          if (res instanceof SelfPromise) {
            res.then(resolve);
          } else {
            resolve(res);
          }
        })
    });
}


let testFn = new SelfPromise((resolve) => {
    setTimeout(() => {
    })
    resolve('test001')

});

testFn.then((res) => {
    console.log('res01', res);
})
.then((res) => {
    console.log('res02', res);
}).then((res) => {
    console.log('res03' ,res);
})



function MyPromise() {

}