Задать вопрос
kondrackii
@kondrackii
1 + 1 = 11

Как достать до переменной?

Здравствуйте, есть проблема с блочными областями видимости переменных.
Есть такой код
PortfolioSchema.pre("save", async function (next) {
  .....
  var placeholder;

  Jimp.read(pathToPortfolioImages + imagename, (err, image) => {
    if (err) throw err;
    else {
      image.resize(546, Jimp.AUTO);
      image.write(pathToPortfolioImages + thumbnailname);

      new Jimp(image.bitmap.width / 2, image.bitmap.height / 2, 0x00000000, function (err, thumbnail) {
        thumbnail.getBase64(Jimp.MIME_PNG, (err, base64) => {
          if (err) throw err;
          placeholder = base64;
        })
      });
    }
  });

  this.thumbnail = thumbnailname;
  this.imageplaceholder = placeholder;

  next()
});

тут:
placeholder = base64;
не присваивается переменная. Как преодолеть эту "невидимость"?

p.s.
this.imageplaceholder = placeholder;
тут присваивается значение полю в модели.
  • Вопрос задан
  • 150 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Проблема не в области видимости, а в асинхронности. Анонимный каллбэк из Jimp.read вызывается уже после того, как основная функция завершила работу.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
24 дек. 2024, в 19:39
6000 руб./за проект
24 дек. 2024, в 19:25
4000 руб./за проект
24 дек. 2024, в 19:16
5000 руб./за проект