在给定的Azure Function中,我可以有一个或多个输出绑定。例如,我可能有blob存储输出(将文件blob写入存储)和队列输出(将消息推入队列)。
例如,如果我有这个非常简单的Azure函数(用Node.js编写)......
module.exports = function (context, req) {
context.log('START: Multi-output function.');
context.bindings.outputBlob = "blob-contents";
context.bindings.outputQueueItem = "{'message': 'hello!'}";
context.done();
};
...在function.json
中设置输出绑定,如下所示......
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req"
},
{
"type": "http",
"direction": "out",
"name": "res"
},
{
"type": "blob",
"name": "outputBlob",
"path": "outcontainer/{rand-guid}",
"connection": "AzureWebJobsDashboard",
"direction": "out"
},
{
"type": "queue",
"name": "outputQueueItem",
"queueName": "outqueue",
"connection": "AzureWebJobsDashboard",
"direction": "out"
}
],
"disabled": false
}
...两个输出绑定实际上是什么时候触发,按什么顺序?
对于问题的时间部分:
context.bindings.outputBlob
)context.done()
之后/之后开火吗?对于问题的顺序部分:
function.json
?答案 0 :(得分:2)
在函数执行完成后 - context.done()
之后输出绑定。
您在代码中设置它们的顺序对绑定执行没有影响。
如果可以,请将实际执行顺序视为实现细节,不要依赖它。话虽如此,如果我没有弄错,实际的订单将是:
function.json
function.json
更新:基于this issue和this issue我得出结论,目前无法保证订单。