我有一个azure函数,看起来像这样:
module.exports = async (context: Context, req: any) => {
const canProceed = await new Auth().verify(context, req);
if (!canProceed) {
context.res = {
status: 401,
body: 'Unauthorised'
};
return context.done(undefined, context);
}
context.res = doStuff();
return context.done(undefined, context);
}
在本地运行该函数时,出现以下警告或错误:
错误:选择返回承诺或致电“完成”。请勿在脚本中同时使用两者。
文档尚不清楚该如何工作
答案 0 :(得分:1)
看看doc。
在Functions运行时的2.x版本中使用异步函数声明或普通JavaScript Promises时,无需显式调用
context.done
回调以表明函数已完成。当导出的异步功能/承诺完成时,您的功能就完成了。导出异步函数时,还可以配置输出绑定以获取返回值。如果您只有一个输出绑定,则建议这样做。
如果没有,请将name
中的$return
属性更改为function.json
。
对于http触发器,
{
"type": "http",
"direction": "out",
"name": "$return"
}
您的功能代码也需要修改。请注意,doStuff()
应该返回预期的有效响应。
module.exports = async (context: Context, req: any) => {
const canProceed = await new Auth().verify(context, req);
if (!canProceed) {
return {
status: 401,
body: 'Unauthorised'
};
}
else return doStuff();
}