Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.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 为什么Firebase云函数执行定义的承诺_Javascript_Firebase_Promise_Google Cloud Functions - Fatal编程技术网

Javascript 为什么Firebase云函数执行定义的承诺

Javascript 为什么Firebase云函数执行定义的承诺,javascript,firebase,promise,google-cloud-functions,Javascript,Firebase,Promise,Google Cloud Functions,我正在努力创造一个承诺,我可以在以后使用。然而,这些信息似乎无关紧要,因为承诺是在没有调用的情况下执行的为什么会自动调用承诺? const functions=require(“firebase函数”); 常数p=新承诺(函数(解析){ setTimeout(函数(){ 跟踪(“服务器生成随机数…”); 解析(Math.random()); }, 1000); }); module.exports.MyCustomFunction=functions.https.onRequest(函数(req

我正在努力创造一个承诺,我可以在以后使用。然而,这些信息似乎无关紧要,因为承诺是在没有调用的情况下执行的为什么会自动调用承诺?

const functions=require(“firebase函数”);
常数p=新承诺(函数(解析){
setTimeout(函数(){
跟踪(“服务器生成随机数…”);
解析(Math.random());
}, 1000);
});
module.exports.MyCustomFunction=functions.https.onRequest(函数(req,res){
res.send(“你好世界”);
});
当我运行Firebase函数并在本地托管时,承诺将在不调用承诺或调用云函数的情况下执行。当我调用cloud函数时,承诺会再次执行

$firebase服务--仅功能,托管
i函数:查看云函数的“/代码/项目”。。。
i托管:从以下位置提供托管文件服务:dist/client
✔  主机:本地服务器:http://localhost:5000
✔  函数[MyCustomFunction]:http函数已初始化(…)。
>正在生成随机数的服务器。。。
...
i函数:在~1s内完成“MyCustomFunction”
>正在生成随机数的服务器。。。

我根本不指望这个承诺会兑现。当我调用
p()
时,我只希望承诺会运行。我发布的代码就是正在运行的代码。当您的代码执行
新承诺,或者调用任何返回承诺的方法时,该承诺的工作已经开始。你不必先打电话给
然后
catch
让它工作

这不是云功能所独有的。这就是JavaScript的工作方式

const p = function(){
      new Promise(function (resolve) {
      setTimeout(function () {
        console.log("server generating random number...");
        resolve(Math.random());
      }, 1000);
  })
};
p();
它是这样工作的。
可能是因为您已经定义了变量。承诺就像程序加载时“P”的初始值一样。尝试使用另一种方法。

是不是
const p=newpromise(函数(解析){……})
您认为没有被“调用”。。。。它是-然后当我调用p()时,你继续说
。。。但是be是一个承诺,而不是一个函数——所以“调用p()”会导致一个错误——奇怪的是,你没有看到我没有这么做。我怎样才能在不履行承诺的情况下为以后保存承诺?你不能。相反,您可以存储一个要调用的函数,该函数将产生一个新的承诺,该承诺可以实现您想要的。