javascript - 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)
但是后来我在控制台中只得到未定义的结果。
解决方案
这里的最后一个函数是一个回调函数,它不会以您想要的方式返回值。阅读它在某处的工作原理,例如这里。您的问题可以通过这种方式通过 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);
})()
推荐阅读
- javascript - 如何在没有未捕获类型错误的情况下访问此嵌套数组?
- reactjs - 使用 mongoDb 将 Next.js 应用程序部署到 Heroku 时出错
- node.js - TypeError: schema[parameter].validateAsync 运行 API 调用时?
- apache - 如何使用 Puppet 的 Apache 模块执行 Location/ProxyPass?
- python-3.x - Python - 比 if else 更好的方法
- javascript - 尽管有条件将当前道具与先前道具进行比较,但在 componentDidUpdate(prevProps) 中的无限 api 调用
- html - 让 AnalyserNode 对 HTMLAudioElement 做出反应
- php - PHP 电子表格预过滤列
- java - 在列表中迭代时对一个或多个匹配项进行分组
- node.js - npm -v 系统找不到指定的路径