. Тогда это не функция / Обещания - PullRequest
0 голосов
/ 12 сентября 2018

Ошибка .then не является функцией.

Когда я вызываю функцию, которая вызывает некоторые вещи, например:

Store.BackgroundFinalizer().then(function() {
  console.log('DO ALARM when Data is there');
  alarmNextEpisode();
});

Функция:

static BackgroundFinalizer() {
  const items = Store.getStoredItems();
  items.forEach(function (item) { // 0.1
    if (new Date(item.episode) < new Date()) {
      let tvmaze = new Tvmaze();
      tvmaze.getData(item.name).then(data => {
        tvmaze.getEpisodeData(data.data.id).then(data => {
          let newdate = tvmaze.sortByNextEpisode(data);
          Store.removeStoreItem(item.name);
          Store.storeItem2(item.name, newdate);
        });
      });
    } else {}
  });
  return 'promise'
}

Нужно ли вернуть обещание?Даже если сама функция не требует?Что делать?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

return 'promise' возвращает строку promise, а не обещание.Вам нужно создать Promise для своего кода, более похожий на то, что я сделал ниже:

(Обратите внимание, я только что добавил это, и у меня нет полного теста; могут быть другие проблемыв коде. Но это должно приблизить вас к вашей цели)

static BackgroundFinalizer() {
  return new Promise(function(resolve, reject) {
    const items = Store.getStoredItems();
    items.forEach(function(item) { // 0.1
      if (new Date(item.episode) < new Date()) {

        let tvmaze = new Tvmaze();

        tvmaze.getData(item.name).then(data => {

          tvmaze.getEpisodeData(data.data.id).then(data => {

            let newdate = tvmaze.sortByNextEpisode(data);
            Store.removeStoreItem(item.name);
            Store.storeItem2(item.name, newdate);

          });
        });
      } else {
	  };
    });
	
	resolve();
  });
}
0 голосов
/ 12 сентября 2018

Вам нужно изучить обещание , прежде чем его использовать.

static BackgroundFinalizer() {
  return new Promise ( (resolve, reject) => {
    const items = Store.getStoredItems();
    items.forEach(function (item) { // 0.1

        if (new Date(item.episode) < new Date()) {

            let tvmaze = new Tvmaze();

             tvmaze.getData(item.name).then(data => {

                return tvmaze.getEpisodeData(data.data.id);

             }).then(data => {

                     let newdate = tvmaze.sortByNextEpisode(data);
                     Store.removeStoreItem(item.name);
                     Store.storeItem2(item.name, newdate);

             });

        } else {

        }


    });

    resolve('success');
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...