我正在使用 firebase 来托管云功能,因为很多功能(几乎每个)我都需要发出 http 请求并获取 json 主体以从中获取数据。但是,回调对我来说效果不太好,我已经搜索了一些现有的答案,但仍然停留在这个问题上。这是代码片段,之前声明了选项,如果我没有将请求放在 get_request_handler 中,它可以正常工作。:
function get_request_handler(assistant, input_url, callback) {
req(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
var cookie = req.cookie('BPMSTS=' + body );
var headers = {
'Content-Type': 'application/json',
'Cookie': cookie
};
var option = {
url: input_url,
method: 'GET',
headers: headers
}
req(option, function(error, res, body) {
assistant.ask(input_url);
if (!error && res.statusCode == 200) {
callback(JSON.parse(body));
} else {
assistant.ask('inner request with error code: ' + (res.statusCode).toString());
}
});
} else {
assistant.ask('outer request with error code: ' + (response.statusCode).toString());
}
});
}
我调用函数如下:
get_request_handler(assistant, workflow_url, function(cur_json){assistant.ask(cur_json);});
现在的问题是无法在 get_request_handler 函数中发出第一个请求。换句话说,它只进入 get_request_handler 而不是进入那个请求体。如果我不创建 get_request_handler 并离开 req(options, function (error, response, body) { ... } 它可以正常工作。对此有什么想法吗?
注意:我刚刚检查了firebase日志,它说这一行: req(options, function (error, response, body) it got TypeError: Assignment to constant variable. at get_request_handler (/user_code/index.js:116:13)