Я хотел бы понять, почему обратный вызов setImmediate не вызывается в следующих случаях:
module.exports.handler = async (event, context, callback) => {
try {
console.log('calling setImmediate...');
setImmediate(function () {
console.log('setImmediate callback invoked!');
callback(null, 'OK!!!!');
})
} catch (e) {
console.log('Failed!');
console.log(e);
callback(e);
}
};
Вывод в CloudWatch выглядит следующим образом:
START RequestId: c2b83f7b-e37a-11e8-ba70-5b99f76ce7ed Version: $LATEST
2018-11-08T17:21:42.922Z c2b83f7b-e37a-11e8-ba70-5b99f76ce7ed calling setImmediate...
END RequestId: c2b83f7b-e37a-11e8-ba70-5b99f76ce7ed
REPORT RequestId: c2b83f7b-e37a-11e8-ba70-5b99f76ce7ed Duration: 35.99 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 19 MB
Удаление ключевого слова async исправляет его , но я не понимаю, почему.
Я пытался воспроизвести это поведение вне лямбда-окружения:
async function test(){
setImmediate(function(){
console.log('setImmediate callback!')
})
}
test()
Но в этом примере вызывается обратный вызов.
Кто-нибудь может указать мне правильное направление, чтобы понять это?