我试图从这个函数中返回结果。
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)
但是在控制台中我只得到了undefined的结果,我想从这个函数中返回结果: var YouTube = require('youtube-node'); var youTube = new YouTube(); youTube = new YouTube().
這裏的最後一個函數是一個回調函數,它不會以你想要的方式返回值。你可以在某處讀到它的工作原理,例如 此处. 您的问题可以通过以下方式解决
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);
})()
你需要等待回复。
这个简单的答案是把 console.log(result)
内的回调。
或者你可以将 search
办法 承诺:
var promise = new Promise((resolve, reject) => {
youTube.search('World War z Trailer', 2, function (error, result) {
if (error) {
reject(error);
}
else {
resolve(result);
}
})
});
然后你可以使用 .then()
像这样。
promise.then((result) => {
console.log(result);
}).catch((err) => {
console.error(err);
});
或者用 待机同步:
(async () => {
try {
const result = await promise;
console.log(result);
} catch (err) {
console.error(err)
}
})();