首页 > 解决方案 > base64-img 回调不适用于词法范围?

问题描述

我不明白为什么回调不使用 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在回调之外捕获该字符串?

标签: javascriptnode.jsexpress

解决方案


推荐阅读