我正在使用NodeJS中的Azure函数。我首先在笔记本电脑上本地编写了具有天蓝色功能的函数。该代码工作正常,可以完成我想要的一切。现在,我将代码添加到我的Azure Visual Studio代码扩展中的新的Azure函数中-完全相同的代码。但是现在它不再起作用了。我没有收到任何错误,https请求没有启动。
这是我的代码:
const https = require('https');
const fs = require('fs');
const storage = require('azure-storage');
const STORAGE_ACCOUNT_NAME = 'SOMETHING';
const ACCOUNT_ACCESS_KEY = 'SOMETHING';
const blobService = storage.createBlobService(STORAGE_ACCOUNT_NAME, ACCOUNT_ACCESS_KEY);
module.exports = async function (context, req) {
context.log('JavaScript HTTP trigger function processed a request.');
let _browser;
let _page;
https.get(SOMEURL", (resp) => {
let data = '';
// A chunk of data has been recieved.
resp.on('data', (chunk) => {
data += chunk;
});
// The whole response has been received. Print out the result.
resp.on('end', async () => {
context.log('here');
});
}).on("error", (err) => {
console.log("Error: " + err.message);
});
};
它从不打印应该在https请求结束后执行的“这里”。 (但是,两种情况下都会打印出第一个context.log)
所以我的问题是,我在做什么错?使用Visual Studio代码扩展时,我可以在azure函数中不使用https请求吗?
编辑:
任何需要异步的人,以下是一个链接,该链接说明了如何使用util.promisify:https://gist.github.com/krnlde/797e5e0a6f12cc9bd563123756fc101f
答案 0 :(得分:1)
我一直基于您的代码回调。
我从定义中删除了predict()
这个绰号,并在您的shape(1, 5, 1)
处理程序中添加了对predict_on_batch()
的调用(这表示函数结束时通知函数主机)
async
另一种选择是将函数保留为context.done
,但您需要使用基于resp.end
的调用来代替回调。在某些情况下,可以通过使用util.promisify包装它们,然后使用const https = require('https');
const fs = require('fs');
const storage = require('azure-storage');
const STORAGE_ACCOUNT_NAME = 'SOMETHING';
const ACCOUNT_ACCESS_KEY = 'SOMETHING';
const blobService = storage.createBlobService(STORAGE_ACCOUNT_NAME, ACCOUNT_ACCESS_KEY);
module.exports = function (context, req) {
context.log('JavaScript HTTP trigger function processed a request.');
let _browser;
let _page;
https.get(SOMEURL", (resp) => {
let data = '';
// A chunk of data has been recieved.
resp.on('data', (chunk) => {
data += chunk;
});
// The whole response has been received. Print out the result.
resp.on('end', async () => {
context.log('here');
context.done();
});
}).on("error", (err) => {
console.log("Error: " + err.message);
});
};
关键字