又没人知道阿里云函数计算为啥我的用 async 会 timeout。。。

2020-08-27 09:06:38 +08:00
 Bonnnnnn
上面已经建立了 db connection,之前也有非 async 的试过了,可以用。

module.exports.handler = async (event, context) => {
try{
connection.connect();
const result = await connection.query('SELECT * FROM user WHERE id=1');
connection.end();

callback(null, result);
}
catch(err){
callback(err);
}
}
2023 次点击
所在节点    问与答
10 条回复
ccraohng
2020-08-27 09:45:00 +08:00
连接操作是同步的吗?
Administrat0r
2020-08-27 09:47:02 +08:00
如果你确定代码没问题的话,你这是无中生 callback ?
Bonnnnnn
2020-08-27 10:29:49 +08:00
@Administrat0r 试了 return(result),还是 timeout
mxT52CRuqR6o5
2020-08-27 10:45:50 +08:00
https://help.aliyun.com/document_detail/156876.html
完全没看到文档有说支持 async
yaodong0126
2020-08-27 10:46:32 +08:00
无中生有,可还行
mxT52CRuqR6o5
2020-08-27 10:47:17 +08:00
非要用可以这么写
exports.handler = function(event, context, callback) {
(async function(){
...
}).then(callback);
};
lonelymarried
2020-08-27 10:55:57 +08:00
它有个时间限制,超过这个时间就 timeout 了。
mxT52CRuqR6o5
2020-08-27 10:56:18 +08:00
非要用可以这么写
exports.handler = function(event, context, callback) {
(async function(){
...
return result;
})().then(callback);
};
mxT52CRuqR6o5
2020-08-27 11:03:34 +08:00
仔细想了一下好像我前面说的都不对,当我没说
你把非 async 没问题得代码发上来看看比一下有什么区别
Bonnnnnn
2020-08-27 12:28:36 +08:00
破案了,当然我是忘了加 callback 。。。后面还有更致命的,我是从 http 函数,转到了事件函数,然后之前的一个 http 函数的触发一直挂在那,我忘了排查,删了就好了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/701780

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX