Возможно, это глупый вопрос, но я потратил довольно много времени, пытаясь разрешить, но не смог получить данные.
В приведенной ниже функции checkMailCount у меня есть объект с именем test, в котором назначена функциязначение для почты.Значение, назначенное из res.on ('end') для этого test.mails через mailCount, не сохраняется / сохраняется.
'use strict';
const https = require('https');
exports.handler = (event, context, callback) => {
let session = event.session;
let request = event.request;
if (request.type === "something") {
if (request.name === "blah blah") {
let emailCount = checkMailCount(session, callback);
context.succeed(callback(null, emailCount));
}
}
function checkMailCount(session, callback) {
let url = 'https://www.googleapis.com/gmail/v1/users/me/messages?
access_token = $ {
session.user.accesstoken
} & q = "is:unread"
';
let test = {
mails: "",
mailCount: function(val) {
this.mails = val;
}
};
let data = "";
https.get(url, function(res) {
res.on('data', function(chunk) {
data += chunk;
//console.log(data);
});
res.on('end', function() {
let result = JSON.parse(data);
//result2+= result.replace('/\//g','');
test.mailCount(result["resultSizeEstimate"]);
// result["resultSizeEstimate"] inaccessible outside
});
});
return test.mails; // This is returning undefined
}
//context.fail();
}
Ниже приведен ответ JSON от gmail API
{
"messages": [
{
"id": "165f1627a53f70c6",
"threadId": "165f000031cee15b"
},
{
"id": "165f00d9e2e07737",
"threadId": "165f00d9e2e07237"
}
],
"nextPageToken": "10349401829330188334",
"resultSizeEstimate": 2
}
Мне нужно вернуть значение результата ["resultSizeEstimate"] из функции checkMailCount.Значение result, result ["resultSizeEstimate"] доступно внутри res.on ('end', f () { Здесь доступно }), но не снаружи.
Я пробовал это в коде VS не как лямбда, я мог сделать это другими способами.Это своего рода сложный для модульного тестирования лямбда-функций.Есть ли способ, которым я могу отправить счетчик электронной почты на context.succeed (обратный вызов (null, emailCount))?