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;
тут присваивается значение полю в модели.
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Проблема не в области видимости, а в асинхронности. Анонимный каллбэк из Jimp.read вызывается уже после того, как основная функция завершила работу.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы