Я не могу понять, почему обратный вызов не использует лексическую область видимости с javascript.Кто-нибудь может мне это объяснить?
заставляет ли эта библиотека помещать весь мой код в обратный вызов?https://www.npmjs.com/package/base64-img
Мой тестовый код:
Примечание: я не включил установочный код для запуска сервера и промежуточного программного обеспечения errorHandler, потому что я чувствовал, что это займет слишком много времени и будет чрезмерным на этомвопрос.
const base64Img = require('base64-img');
router.get('/url_to_base64', async (req, res, next) => {
try {
const url = 'https://i.imgur.com/6gMn1RD.png';
let base64;
base64Img.requestBase64(url, function (err, result, body) { // callback()
console.log('BODY', body.slice(0, 30));
base64 = body.slice(0, 30);
console.log('base64_inside_cb', body.slice(0, 30));
});
console.log('base64_outside_cb', typeof base64);
res.send({ message: 'success' });
} catch (err) {
next(err);
}
});
ожидаемый вывод:
base64_outside_cb string
GET /tests/url_to_base64 200 8.599 ms - 21
BODY data:image/png;base64,iVBORw0K
base64_inside_cb data:image/png;base64,iVBORw0K
фактический вывод:
base64_outside_cb undefined
GET /tests/url_to_base64 200 8.599 ms - 21
BODY data:image/png;base64,iVBORw0K
base64_inside_cb data:image/png;base64,iVBORw0K
Кто-нибудь знает, как я могу захватить эту строку base64_outside_cb
за пределами обратного вызова