npm вводит выбранный пользователем вариант из выпадающего списка - PullRequest
0 голосов
/ 02 февраля 2019

Я очень новичок в node.js и асинхронном программировании.Я пытаюсь создать программу, которая перемешивает список воспроизведения.Я поместил плейлисты пользователя в массив.

Я хотел бы отобразить этот массив на веб-странице для выбора пользователем.Как только пользователь сделает свой выбор, я хочу продолжить работу с программой, используя выбранный элемент.Это фрагмент кода, который я написал до сих пор.

// Callback functions
    function plCallback(selected_playlist) {
      playlist_id =
      console.log(playlist_id);
    }

    function getPlaylist(body, plCallback) {
      // Pull user playlists
      for (var i = 0; i < body.items.length; i++) {
        playlistArray.push({'name': body.items[i].name, 'id': body.items[i].id});
      }

      // prompt user to select desired playlist to shuffle
      var selPlaylist = document.getElementById('playlist-drop');
      for (var i = 0; i < playlistArray.length; i++) {
        var opt = playlistArray[i].name;
        var el = document.createElement("option");
        el.textContent = opt;
        el.value = opt;
        select.appendChild(el);
      }

      // send selected playlist to Callback
      var dropdown_return = document.getElementById('playlist-drop');
      var selected_playlist = dropdown_return.options[dropdown_return.selectedIndex].value;
      plCallback(selected_playlist);
    }

Я действительно в растерянности из-за того, что мне нужно искать, так как я новичок в js и node.

Подводя итог: я заполняю массив js с помощью spotifyплейлисты.Я хочу показать этот список пользователю, чтобы сделать выбор.После того, как этот выбор сделан, мне нужно, чтобы программа продолжила использовать этот выбор.

1 Ответ

0 голосов
/ 02 февраля 2019

Я не вижу, куда входит node.js. Но я думаю, что ваша конструкция обратного вызова неверна.


Это функция getPlaylist(), вызывающая функцию plCallback() и проходящаяполученный playlist объект,
это еще не делает getPlaylist() асинхронным.

function plCallback(playlist) {
  if (playlist) {
    // Do something ..
  }
}

function getPlaylist(body) {
  var playlist = .. ;
  plCallback(playlist);
}

// Your call ..
getPlaylist(body);


Это getPlaylist() с использованием функции обратного вызова, обратный вызов является параметром getPlaylist() и срабатывает после получения playlist, однако это все равно не происходит асинхронно.
Большое преимущество конструкции "обратного вызова" состоит в том, что вы можете делать разные вещи с playlist для каждого вызова, какфиксированная функция plCallback() не определена.

function getPlaylist(body, plCallback) {
  var playlist = .. ;
  plCallback(playlist);
}

// Your call ..
getPlaylist(body, function(playlist) {
  if (playlist) {
    // Do something ..
  }
});


Теперь, чтобы сделать функцию асинхронной, посмотрите: Как создать асинхронную функцию в Javascript?

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