首页 > 解决方案 > NodeJS:无法从函数返回结果

问题描述

我正在尝试从此函数返回结果:

var YouTube = require('youtube-node');
var youTube = new YouTube();

youTube.setKey('XXXXXXXXXXXX');

var result = youTube.search('World War z Trailer', 2, 
    function(error, result) {
        if (error) {
            console.log(error);
        } else {
            return result
        }})

console.log(result)

但是后来我在控制台中只得到未定义的结果。

标签: javascriptnode.jssearchyoutubeyoutube-api

解决方案


这里的最后一个函数是一个回调函数,它不会以您想要的方式返回值。阅读它在某处的工作原理,例如这里。您的问题可以通过这种方式通过 Promise 解决

var search = new Promise(
  (resolve, reject) => {
    youTube.search('World War z Trailer', 2, function(error, result) {
     if (error) { reject(error); }
     resolve(result);
    })
  }
);       
(async () => {
  var result = await search;
  console.log(result);
})()             

推荐阅读