Необработанный отказ от обещания: PLAY_ACTIVITY - Apple MusicKitJS API - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь создать простой проигрыватель веб-приложений Apple Music. Я успешно получил небольшой пример работы. Я могу загрузить альбом, песню и т. Д. В очередь музыкального проигрывателя на основе типов и идентификаторов. Я могу проигрывать, приостанавливать, переходить к следующему треку, предыдущему треку и т. Д., Но по какой-то причине, либо когда заканчивается одна песня и начинается следующая (обрабатывается автоматически очередью проигрывателя API), либо я щелкаю, чтобы перейти к следующей дорожке, приостановить и т. Д. он будет делать то, что предполагал, но всплывает с ошибкой.

Пример: я загружаю альбом в очередь. Нажмите кнопку воспроизведения. Он начинает воспроизводить музыку, но иногда он случайно всплывает с сообщением об ошибке, как только он начинает играть, и выводит ошибку на консоль.

Это то, что отображается в консоли разработчика. «Необработанное отклонение обещания: PLAY_ACTIVITY: метод play stop () был вызван без предыдущего дескриптора play ()» https://imgur.com/5MCq08s

Я пытался заставить js приостановить песню перед переключением треков, но это не решило проблему. «Необработанное отклонение обещания: PLAY_ACTIVITY: метод play stop () был вызван без предыдущего дескриптора play ()»

document.addEventListener('musickitloaded', () => {
    console.log("musickit loaded :D")
  // MusicKit global is now defined
  fetch('/token').then(response => response.json()).then(res => {
    /***
      Configure our MusicKit instance with the signed token from server, returns a configured MusicKit Instance
      https://developer.apple.com/documentation/musickitjs/musickit/musickitinstance
    ***/
    const music = MusicKit.configure({
      developerToken: res.token,
      app: {
        name: 'AppleMusicCS115',
        build: '0.0.1'
      },
      declarativeMarkup: true
    });

    // setup click handlers
    document.getElementById('add-to-q-btn').addEventListener('click', () => {
      const idInput   = document.getElementById('id-input');
      const typeInput = document.getElementById('type-input');

      /***
        Add an item to the playback queue
        https://developer.apple.com/documentation/musickitjs/musickit/musickitinstance/2992716-setqueue
      ***/
      music.setQueue({
        [typeInput.value]: idInput.value
      });
      // set fields back to blank fields
      idInput.value   = '';
      typeInput.value = '';
    });

    document.getElementById('play-btn').addEventListener('click', () => {
      /***
        Resume or start playback of media item
        https://developer.apple.com/documentation/musickitjs/musickit/musickitinstance/2992709-play
      ***/
     music.authorize().then(function() {
        music.play();
      });// added then function
    });

    document.getElementById('pause-btn').addEventListener('click', () => {
      /***
        Pause playback of media item
        https://developer.apple.com/documentation/musickitjs/musickit/musickitinstance/2992708-pause
      ***/
     music.authorize().then(function() {
        music.pause();
      });// added then function
    });

    document.getElementById('next-trk-btn').addEventListener('click', () => {
        /***
         * Skip to next item in queue.
         * https://developer.apple.com/documentation/musickitjs/musickit/player/2992772-skiptonextitem
         */
        music.authorize().then(function() {
            music.skipToNextItem();
          });// added then function



    });

    document.getElementById('prev-trk-btn').addEventListener('click', () => {
        /***
         * https://developer.apple.com/documentation/musickitjs/musickit/player/2992773-skiptopreviousitem
         */

        music.authorize().then(function() {
            music.pause();;
          });
        music.authorize().then(function() {
            music.skipToPreviousItem();;
          });// added then function
    })
</head>
<body>
  <label>Type (eg 'album' 'song')</label>
  <input id="type-input" type="text" value="album">
  <br>
  <label>id</label>
  <input id="id-input" type="text" value="1462319084">
  <br>
  <button id="add-to-q-btn">Add to Queue</button>
  <br>
  <hr>
  <button id="prev-trk-btn">Prev Track</button>
  <button id="play-btn">Play</button>
  <button id="pause-btn">Pause</button>
  <button id="next-trk-btn">Next Track</button>

  <button id="login-btn">Login to Apple Music</button>
  <br>

Я ожидаю, что он будет переключать песни, воспроизводить, приостанавливать и т. Д., Не показывая никаких всплывающих ошибок. Может быть, как-то обработать эти исключения? Консольный вывод:

Необработанный отказ от обещания: PLAY_ACTIVITY: метод play stop () был вызван без предыдущего дескриптора play () (анонимная функция) - musickit.js: 1: 14539 отклонено - musickit.js: 534 promiseReactionJob

...