Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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中的承诺即使没有被使用,也能保证取得进展吗?_Javascript_Node.js_Promise - Fatal编程技术网

JavaScript中的承诺即使没有被使用,也能保证取得进展吗?

JavaScript中的承诺即使没有被使用,也能保证取得进展吗?,javascript,node.js,promise,Javascript,Node.js,Promise,假设我创建了一个表示GET请求结果的Promise,但不等待/使用它就让它超出范围。我是否保证承诺会取得进展(即请求发生)?或者,垃圾收集器是否可能在解决之前将其清理干净?您正在将一个执行器函数传递给promise构造函数,即: new Promise(function (resolve, reject) { ... }) 如果该函数被promise构造函数调用(是的,它将被调用),那么其余的函数与是否将promise对象分配给任何对象都没有多大关系。您的函数已被调用,不能停止,当然不能被超出

假设我创建了一个表示
GET
请求结果的
Promise
,但不等待/使用它就让它超出范围。我是否保证承诺会取得进展(即请求发生)?或者,垃圾收集器是否可能在解决之前将其清理干净?

您正在将一个执行器函数传递给promise构造函数,即:

new Promise(function (resolve, reject) { ... })
如果该函数被promise构造函数调用(是的,它将被调用),那么其余的函数与是否将promise对象分配给任何对象都没有多大关系。您的函数已被调用,不能停止,当然不能被超出范围的调用方对象停止


因此,是的,您的executor函数保证会取得进展。

Promise实际上并不代表GET请求的结果。重要的是你在函数中所做的事情,因此,是的,如果你确实提出请求,它将被提出。请注意你自己的措辞:“…一个
承诺
,它代表一个
获取
请求的结果…”我在那里的关键字上加了强调。承诺代表的是行动的结果,而不是行动本身。我只能附和@HereticMonkey。请注意,承诺是通过运行get请求中引用的
resolve
回调引用的,这就是保证承诺不会被垃圾收集的原因。而不是相反。活动异步请求不会因为“被垃圾收集”而停止,相反,它充当GC的根对象。@Bergi感谢您的深入解释!