Javascript Azure函数没有';异步函数完成后返回响应

Javascript Azure函数没有';异步函数完成后返回响应,javascript,node.js,promise,azure-functions,azure-function-async,Javascript,Node.js,Promise,Azure Functions,Azure Function Async,我试图在VS代码中开发一个函数,该函数将url作为输入,并在处理完成后返回响应。但是,当运行此函数时,它不返回任何内容。我试着在Webstorm中测试类似的代码,并确认它可以很好地记录结果。我是新来的节点和承诺,所以不确定我做错了什么 编辑-根据@hellikiam的建议在driver.get之前添加return关键字。还添加了一个简单的日志语句,以确认结果可用,但未在正文中返回 var AxeBuilder = require('@axe-core/webdriverjs'), Web

我试图在VS代码中开发一个函数,该函数将url作为输入,并在处理完成后返回响应。但是,当运行此函数时,它不返回任何内容。我试着在Webstorm中测试类似的代码,并确认它可以很好地记录结果。我是新来的节点和承诺,所以不确定我做错了什么

编辑-根据@hellikiam的建议在driver.get之前添加return关键字。还添加了一个简单的日志语句,以确认结果可用,但未在正文中返回

var AxeBuilder = require('@axe-core/webdriverjs'),
    WebDriver = require('selenium-webdriver');
const chromedriver = require('chromedriver');
const chrome = require("selenium-webdriver/chrome");
const screen = {
    width: 640,
    height: 480
  };

chrome.setDefaultService(new chrome.ServiceBuilder(chromedriver.path).build());
var driver = new WebDriver.Builder()
    .forBrowser('chrome')
    .setChromeOptions(new chrome.Options().headless().windowSize(screen))
    .build();
module.exports = async function (context, req) {
    context.log('JavaScript HTTP trigger function processed a request.');

    const url = (req.query.url || (req.body && req.body.url));
    return driver.get(url).then(function () {
        new AxeBuilder(driver).analyze(function (err, results) {
            resultsJson = JSON.stringify(results);
            console.log(resultsJson)
                context.res = {
                    status: 200, /* Defaults to 200 */
                    body: resultsJson,
                    headers: {
                        'Content-Type': 'application/json'
                    }
                };

                if (err) {
                    // Handle error somehow
                    }           
            });
        });
   
    context.done();
}

您没有从导出的模块返回任何内容

returndriver.get(url).then(function(){//在这里添加return语句)。
新的AxeBuilder(驱动程序)。分析(函数(错误、结果){
resultsJson=JSON.stringify(结果);
context.res={
状态:200,/*默认为200*/
正文:resultsJson,
标题:{
“内容类型”:“应用程序/json”
}
};
如果(错误){
//以某种方式处理错误
}           
});
});
我发现了另一个问题。您想要返回的是回调函数内部。 您应该用承诺来包装回调,以获得回调之外的结果。试试这个,兄弟


返回新承诺((解决、拒绝)=>{
get(url).then(函数(){//在这里添加返回语句)。
新的AxeBuilder(驱动程序)。分析(函数(错误、结果){
resultsJson=JSON.stringify(结果);
context.res={
状态:200,/*默认为200*/
正文:resultsJson,
标题:{
“内容类型”:“应用程序/json”
}
};
resolve(resultsJson)//要返回的任何值
如果(错误)拒绝(错误)
});
});
})
使用WAIT语句在模块外部调用此函数

const foo=require('./my/path/foo')
(异步()=>{
常量参数='我的参数'
常数条=等待foo(参数)
console.log(bar)
})()

您没有从导出的模块返回任何内容

returndriver.get(url).then(function(){//在这里添加return语句)。
新的AxeBuilder(驱动程序)。分析(函数(错误、结果){
resultsJson=JSON.stringify(结果);
context.res={
状态:200,/*默认为200*/
正文:resultsJson,
标题:{
“内容类型”:“应用程序/json”
}
};
如果(错误){
//以某种方式处理错误
}           
});
});
我发现了另一个问题。您想要返回的是回调函数内部。 您应该用承诺来包装回调,以获得回调之外的结果。试试这个,兄弟


返回新承诺((解决、拒绝)=>{
get(url).then(函数(){//在这里添加返回语句)。
新的AxeBuilder(驱动程序)。分析(函数(错误、结果){
resultsJson=JSON.stringify(结果);
context.res={
状态:200,/*默认为200*/
正文:resultsJson,
标题:{
“内容类型”:“应用程序/json”
}
};
resolve(resultsJson)//要返回的任何值
如果(错误)拒绝(错误)
});
});
})
使用WAIT语句在模块外部调用此函数

const foo=require('./my/path/foo')
(异步()=>{
常量参数='我的参数'
常数条=等待foo(参数)
console.log(bar)
})()

Hey@hellikiam,谢谢你的回答。我确实尝试按照您的回答添加了返回,但行为仍然相同。它返回200响应,但未返回任何内容。您是否在模块调用程序中等待模块函数?嘿@hellikiam,谢谢您的回答。我确实尝试按照您的回答添加了返回,但行为仍然相同。它返回200响应,但未返回任何内容。是否在模块调用程序中等待模块函数?