Electron — setTimeout для ipcRenderer.send()

#javascript #node.js #electron #settimeout

#javascript #node.js #electron #settimeout

Вопрос:

Привет, я вызываю ipcRenderer.send() из index.html файла.

То, что я пытаюсь сделать, это отложить вызов функции на 5 секунд. Однако, похоже, это не работает.

Вот что я пытаюсь сделать по существу:

setTimeout(ipcRenderer.send('startYellowApple', ["bob", "cat"]), 5000);

и вот как я выполняю это в обычной встроенной функции Javascript:

 function start(){
  setTimeout(ipcRenderer.send('startYellowApple', ["bob", "cat"]), 5000);
}
 

Я делаю что-то не так?

Однако мне удается добиться некоторого прогресса, используя этот метод.. Однако он замораживает всю мою программу electron до истечения 5 секунд, что на самом деле не идеально:

 function sleep(milliseconds) {
  const date = Date.now();
   let currentDate = null;
   do {
     currentDate = Date.now();
   } while (currentDate - date < milliseconds);
}

function start(){
  sleep(5000);
  ipcRenderer.send('startYellowApple', ["bob", "cat"]);
}
 

Может кто-нибудь мне помочь, пожалуйста? Спасибо!

Комментарии:

1. Вы вызываете функцию без каких-либо задержек. Синтаксис должен быть setTimeout(() => ipcRenderer.send(...), 5000)

Ответ №1:

Проблема в том, как вы передаете свой обратный вызов функции setTimeout.

 ipcRenderer.send('startYellowApple', ["bob", "cat"])
 

на самом деле это вызов функции, он будет вызван немедленно, вы должны обернуть вызов внутри функции, чтобы достичь того, чего вы хотите.

 function start(){
   setTimeout(() => ipcRenderer.send('startYellowApple', ["bob", "cat"]), 5000);
}