Рассмотрим этот кусок торта... ehm, code:
'use strict'
function doWork () {
return new Promise(function (resolve, reject) {
// work work work...
// Done! But... where the resolve() ???
})
}
doWork().then(function doMoreWork () {
// Some more work to do...
})
Как только функция в конструкторе Promise заканчивается...
- Является ли объект
Promise
сборкой мусора? - Является ли
doMoreWork()
сборщиком мусора?
Я предполагаю, что doMoreWork()
не может быть GC-ed напрямую, потому что Promise сохраняет ссылку на него, но как только тело обещания закончит и вернет контекст выполнения в верхнюю (?) область, стек раскрутится (потому что там больше нет заявлений, которые должны исполняться), и Обещание становится недостижимым, таким образом, будучи сборщиком мусора.
Можете ли вы подтвердить, что мое понимание этой темы верное?
Как я мог эмпирически наблюдать это поведение? Другими словами, как я могу контролировать, какие объекты GC-ed и когда? Я развиваюсь исключительно в Node.js, если это имеет значение.