Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS(node.JS)-如果我进行了一个异步调用,但不等待它完成,那么它能保证完成执行吗?_Javascript_Node.js_Asynchronous - Fatal编程技术网

Javascript JS(node.JS)-如果我进行了一个异步调用,但不等待它完成,那么它能保证完成执行吗?

Javascript JS(node.JS)-如果我进行了一个异步调用,但不等待它完成,那么它能保证完成执行吗?,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,标题是一个很长的问题,但若我在javascript中进行异步调用,但并没有回调或将其链接到承诺中,它会完成执行吗?i、 e.如果我有如下代码: function markAsInactive(userId) { return retrieveUser(userId) // .then(res => { const mark = markAsInactive(userId) // returns a promise (say takes 2 seconds)

标题是一个很长的问题,但若我在javascript中进行异步调用,但并没有回调或将其链接到承诺中,它会完成执行吗?i、 e.如果我有如下代码:

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
的调用被触发,但线程不会等待它解决,而是会立即转到下一个
,然后
(据我所知)。如果堆栈返回到根,线程/进程会取消调用吗

我知道我可以使用类似于
return Promise.all([mark,…])
的方法来并行解析多个承诺;这个问题更适合我的启发

如果堆栈返回到根,线程/进程会取消调用吗

它完成了调用所有异步操作在完成进一步工作之前退出当前作业(任务),完全展开堆栈;这是给定线程(NodeJS使用单个线程)上的固有特性,并且承诺
然后
回调保证是异步的


如果NodeJS在完成之前就终止了,那么这项工作就不会完成,但是NodeJS会在有任何未完成的任务、I/O操作等的情况下继续运行。

这样想:一旦请求成功发出(例如发送到服务器),等待响应与否并不重要,请求已发送,服务器将执行它必须执行的操作,并且只有在该操作之后,它才会尝试使用结果进行响应。如果你不“等待”它完成,你就是没有捕捉到响应。不,例如,如果你的计算机崩溃,或者流星撞击地球,它就不会完成。