JS(node.js) – 如果我进行asynchronous调用,但不等待它完成将保证完成执行?

标题是一个长期的问题,但如果我在JavaScript中进行asynchronous调用,但没有回电或在承诺链它会完成执行? 即如果我有像这样的代码:

function markAsInactive(userId) { return retrieveUser(userId) // .then(res => { const mark = markAsInactive(userId) // returns a promise (say takes 2 seconds) return Promise.resolve('blah') }) .then(...etc) .catch(...) } 

markAsInactive的调用被触发,但是线程不会等待它parsing,而是立即转向下一个(就我的理解而言)。 如果堆栈返回到根目录,将保证完成执行,否则线程/进程将取消调用?

我知道我可以使用类似return Promise.all([mark, ...])来并行地parsing多个promise。 这个问题更多的是为了我的熏陶。

如果堆栈返回到根目录,将保证完成执行,否则线程/进程将取消调用?

它完成了呼叫。 所有的asynchronous操作在进一步完成之前最终退出当前的任务(任务),完全退出堆栈; 它是给定线程上基于作业的JavaScript本质 (而NodeJS使用单个线程),保证callback的事实保证是asynchronous的。

如果NodeJS在完成之前终止,那么工作将不会完成,但是NodeJS在有任何未完成的任务,I / O操作等时保持运行。