После этого документы http://bluebirdjs.com/docs/api/promise.bind.html Я ожидаю, что жизнь связанного контекста закончится с завершением вызова.Но, видимо, это не так.
Следующий код:
const Promise = require('bluebird');
const chain = (callNumber) => {
console.log('call:', callNumber, '============');
return asyncFunction()
.bind({})
.then(() => {
console.log('this', callNumber, this);
this.t = 1
})
.then(() => {
this.t2 = 2
})
.then(() => {
console.log('this', callNumber, this);
})
};
const asyncFunction = () => new Promise((resolve) => {
return Promise.delay(100)
.then(resolve);
});
chain(1).then(() => chain(2));
дает такой результат:
call: 1 ============
this 1 {}
this 1 { t: 1, t2: 2 }
call: 2 ============
this 2 { t: 1, t2: 2 }
this 2 { t: 1, t2: 2 }
Ожидаемый результат:
call: 1 ============
this 1 {}
this 1 { t: 1, t2: 2 }
call: 2 ============
this 2 {}
this 2 { t: 1, t2: 2 }
Это правильное поведениеили я где-то ошибся?