gpt4 book ai didi

javascript - Promise 在 azure function app javascript 中不起作用

转载 作者:行者123 更新时间:2023-12-03 00:20:15 26 4
gpt4 key购买 nike

我有简单的演示来理解 Promise 概念,但它没有按预期工作,查看我尝试过的代码。

module.exports = async function (context, iotHubMessage) {

context.log('START');
var promise1 = new Promise(function (resolve, reject) {

setTimeout(function () {
resolve('foo');
}, 1000);

});

context.log(promise1);

promise1.then(function (resolve) {
context.log(resolve);
// expected output: "foo"
});

};

我得到了这个输出

2019-01-24T12:58:38.695 [Information] START
2019-01-24T12:58:38.695 [Information] Promise { <pending> }
2019-01-24T12:58:38.696 [Information] Executed

为什么在输出日志中没有得到 foo 请帮助我,谢谢!

最佳答案

函数返回后,Azure 似乎正在终止您的进程。因为它没有返回 Promise(或者更确切地说,没有返回等待超时的 Promise),所以它没有等待 Promise 回调运行。

你可以使用

module.exports = function(context, iotHubMessage) {
// ^^^^^^^^ no async necessary here
context.log('START');
var promise1 = new Promise(function (resolve, reject) {
setTimeout(resolve, 1000);
});
context.log(promise1);
var promise2 = promise1.then(function() {
context.log("promise fulfilled");
});
return promise2;
// ^^^^^^^^^^^^^^^^
}

或使用async/await语法:

module.exports = async function(context, iotHubMessage) {
context.log('START');
var promise1 = new Promise(function (resolve, reject) {
setTimeout(resolve, 1000);
});
context.log(promise1);
await promise1;
// ^^^^^
context.log("promise fulfilled");
}

关于javascript - Promise 在 azure function app javascript 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54347873/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com