3

Почему возникает ошибка: "objectForImage is not function"? Разве я не могу функцию передавать как объект? Если пример ещё более простым делать, то callback без проблем вызывается.

function loadSprite(dir, objectForImage) {
    var list_block_image = fs.readdirSync(dir);
    var file_name = randomElement(list_block_image);
    jimp.read(dir+file_name, function (err, load_image) { if (err) throw err; objectForImage (load_image);});

}

loadSprite("./boys/", function (image_load) {boysSprite=image_load;});
Anon8
  • 695
  • 1
    чтобы получить function вы должны вызвать функцию или возвращать фанктор, а objectForImage (load_image) это ни то и ни другое – AR Hovsepyan Feb 06 '18 at 19:07
  • objectForImage (load_image); - вот так разве я не вызываю функцию? можете более подробно объяснить. – Anon8 Feb 06 '18 at 19:09
  • это все тело функции loadSprite? objectForImage нигде не переопределяется? – smellyshovel Feb 06 '18 at 20:29
  • И вы уверены, что при вызове loadSprite передается вторым аргументом именно функция? Может быть значение подставляется динамически, и приходит не то, что нужно? – smellyshovel Feb 06 '18 at 20:29
  • Да, да. До строчки jimp.read. Лог показывает [function: objectForImage]. – Anon8 Feb 07 '18 at 00:09
  • Кстати, без параметра image_load функций отрабатывает нормально. Что-то я вообще уже ничего не понимаю. – Anon8 Feb 07 '18 at 04:05
  • @hitcode в будущем упоминайте при помощи символа @, чтобы участник получил уведомление – smellyshovel Feb 07 '18 at 15:35

1 Answers1

0

Разобрался. У меня было подряд несколько вызовов:

loadSprite("./boys/", function (image_load) {boysSprite=image_load;});
loadSprite("./bombs/", old_value);
loadSprite("./bonus/", old_value);

И крашилось не на строчке 1, она отрабатывала идеально. А на последующих строчках.

Всем спасибо за помощь.

Anon8
  • 695