npm从下拉列表中输入用户选择的选项

时间:2019-02-01 22:36:49

标签: javascript asynchronous npm

我对node.js和异步编程非常陌生。我正在尝试制作一个可以改变Spotify播放列表的程序。我将用户的播放列表放入了一个数组。

我想在网页上显示此数组供用户选择。用户做出选择后,我想使用所选元素继续该程序。这是我到目前为止编写的代码段。

// 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还是很陌生,我什至需要寻找的东西也让我感到茫然。

总结一下:我用Spotify播放列表填充了一个js数组。我想向用户显示此列表以进行选择。做出选择后,我需要程序继续使用上述选择。

1 个答案:

答案 0 :(得分:0)

我看不到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 ..
  }
});


现在,要使该函数异步,请签出:How can I create an Asynchronous function in Javascript?

相关问题