@SideWest
Python.Новичок

Почему комп умирает от скрипта?

Я недавно изучаю JS, имею код вида:

while (true){
  api.newsfeed.get({
      'count': 1
  }).then(result => console.log(result['items'][0]['post_id']))
}


По идеи он должен печатать последний пост из моих новостей, но когда я ему запускаю-комп виснет и вся оперативка расходуется! Почему так?

Я попробовал запустить его в цикле 10,20 и 1000 раз - всё было нормально!
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
twobomb
@twobomb
Ну конечно бесконечный цикл вешает весь поток.
Замените хотя бы на
(function(){
  api.newsfeed.get({
      'count': 1
  }).then(result => console.log(result['items'][0]['post_id']))
 setTimeout(arguments.callee,0);
})();


P.S. А вообще наверно нужно что-то типа
(function(){
	var f = arguments.callee;
  api.newsfeed.get({
      'count': 1
  }).then(function(result){
	console.log(result['items'][0]['post_id']);
	f();	
  })
})();
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Robur
@Robur
Знаю больше чем это необходимо
он заблокирует поток пока не завершит работу.
while(true) - будет работать бесконечно каждую секунду создавая сотни новых и новых вызовов api.newsfeed.get пока у вашего компа не закончатся ресурсы. .

api.newsfeed.get НЕ будет ждать выполнения запроса как вы возможно думаете.
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
while (true){} это же бесконечный цикл.
Он никогда не закончится, и будет постоянно писать что-то в консоль.

И да, странно что комп умирает, обычно от этого загружается одно ядро и отваливается одна вкладка.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 01:31
1500 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект