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);
});