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()”会导致一个错误——奇怪的是,你没有看到我没有这么做。我怎样才能在不履行承诺的情况下为以后保存承诺?你不能。相反,您可以存储一个要调用的函数,该函数将产生一个新的承诺,该承诺可以实现您想要的。