为什么 promis 只适用于最后一个变量?

Why promis only works in the last variable?

为什么 "then" 在 var test1 中不显示 1111111?但是如果只是使用 resolve();工作正常。怎么了?如何同时做多个promise请求?

window.testFunc = function() {

  let _self = this;

  this.test = function() {
    _self.resolve();
  };

  return new Promise(function(resolve, reject) {

    _self.resolve = resolve;
    _self.reject = reject;

    //this work fine
    //resolve();

    //this not work
    setTimeout(function() {
      _self.test();
    }, 300);
  });

};


let test1 = window.testFunc();
let test2 = window.testFunc();

test1.then(function(value) {
  console.log(111111);
});
test2.then(function(value) {
  console.log(222222);
});

this 每次调用 window.testFunc 时都具有相同的值,因此 _self.test 与 属性 相同(每次都会被覆盖)。

将局部变量用于新对象 (let _self = {};) 而不是共享对象。

window.testFunc = function() {

    let _self = {};

    _self.test = function () {
        _self.resolve();
    };

    return new Promise(function (resolve, reject) {

        _self.resolve = resolve;
        _self.reject = reject;

        //this work fine
        //resolve();

        //this not work
        setTimeout(function(){
            _self.test();
        }, 300);
    });

};


let test1 = window.testFunc();
let test2 = window.testFunc();

test1.then(function(value){
    console.log(111111);
});
test2.then(function(value){
    console.log(222222);
});