Return 来自节点 js 中的异步函数
Return result from async function in node js
我在节点 js 中使用这个实验室 https://github.com/pste/youtube.get-video-info
任务是将异步函数的结果写入全局数组
var yt = require('youtube.get-video-info');
var outQueue = []; // global array
function getQueue(idName){
yt.retrieve(idName, function(err, res) { // async function
if (err) throw err;
var result = ybVideoName(res);
outQueue.push(result);
});
}
function ybVideoName(res){ // function to get youtube name from json
var body = res.watch_next_response;
let params = JSON.parse(body);
let jsonBody = params.contents.twoColumnWatchNextResults.results.results.contents;
let jsonBodyget = jsonBody[0];
let itog = jsonBodyget.videoPrimaryInfoRenderer.title.runs[0].text;
itog = itog.replace(/[+]/g, ' ');
return itog;
}
我尝试使用 promise 和 async 函数,但已提交。
函数 ybVideoName 是获取 YouTube 视频名称的方法。
也许一些库可以帮助我?
感谢您的帮助。
我花了一点时间将 youtube.get-video-info 改造成更现代的方法,使用 axios.js 作为向 Youtube 发出请求的库。我的叉子在这里:https://github.com/andrunix/youtube.get-video-info。您需要安装 axios 作为依赖项。您可以删除 'request' 作为依赖项,因为它已被弃用。
这让我可以转换代码以使用 async/await。您仍然需要将代码包装在异步函数中,但是。这是我的做法。
// https://github.com/andrunix/youtube.get-video-info
const yt = require('./youtube.get-video-info.js');
const outQueue = [];
async function getQueue(idName){
let result = await yt.retrieve(idName);
outQueue.push(ybVideoName(result));
}
function ybVideoName(res){ // function to get youtube name from json
const body = res.watch_next_response;
let params = JSON.parse(body);
let jsonBody = params.contents.twoColumnWatchNextResults.results.results.contents;
let jsonBodyget = jsonBody[0];
let itog = jsonBodyget.videoPrimaryInfoRenderer.title.runs[0].text;
return itog.replace(/[+]/g, ' ');
}
(async () => {
await getQueue('ml-v1bgMJDQ');
console.log(outQueue);
})();
希望对您有所帮助。
我在节点 js 中使用这个实验室 https://github.com/pste/youtube.get-video-info
任务是将异步函数的结果写入全局数组
var yt = require('youtube.get-video-info');
var outQueue = []; // global array
function getQueue(idName){
yt.retrieve(idName, function(err, res) { // async function
if (err) throw err;
var result = ybVideoName(res);
outQueue.push(result);
});
}
function ybVideoName(res){ // function to get youtube name from json
var body = res.watch_next_response;
let params = JSON.parse(body);
let jsonBody = params.contents.twoColumnWatchNextResults.results.results.contents;
let jsonBodyget = jsonBody[0];
let itog = jsonBodyget.videoPrimaryInfoRenderer.title.runs[0].text;
itog = itog.replace(/[+]/g, ' ');
return itog;
}
我尝试使用 promise 和 async 函数,但已提交。
函数 ybVideoName 是获取 YouTube 视频名称的方法。
也许一些库可以帮助我?
感谢您的帮助。
我花了一点时间将 youtube.get-video-info 改造成更现代的方法,使用 axios.js 作为向 Youtube 发出请求的库。我的叉子在这里:https://github.com/andrunix/youtube.get-video-info。您需要安装 axios 作为依赖项。您可以删除 'request' 作为依赖项,因为它已被弃用。
这让我可以转换代码以使用 async/await。您仍然需要将代码包装在异步函数中,但是。这是我的做法。
// https://github.com/andrunix/youtube.get-video-info
const yt = require('./youtube.get-video-info.js');
const outQueue = [];
async function getQueue(idName){
let result = await yt.retrieve(idName);
outQueue.push(ybVideoName(result));
}
function ybVideoName(res){ // function to get youtube name from json
const body = res.watch_next_response;
let params = JSON.parse(body);
let jsonBody = params.contents.twoColumnWatchNextResults.results.results.contents;
let jsonBodyget = jsonBody[0];
let itog = jsonBodyget.videoPrimaryInfoRenderer.title.runs[0].text;
return itog.replace(/[+]/g, ' ');
}
(async () => {
await getQueue('ml-v1bgMJDQ');
console.log(outQueue);
})();
希望对您有所帮助。