在回调函数的生命周期之后保留数据
Persisting data beyond the lifetime of a callback function
如果这是一个常见问题,请原谅我,我是 JavaScript 的新手。
我正在尝试使用来自 npmjs.
的库“video-url-link”
自述文件提供了以下示例:
videoUrlLink.twitter.getInfo('https://twitter.com/{@}/status/{ID}', {}, (error, info) => {
if (error) {
console.error(error);
} else {
console.log(info.full_text);
console.log(info.variants);
}
});
这很好用,但如果我希望“信息”对象在回调范围之外持续存在,我有什么选择?
我试过在 getInfo 调用之外声明一个变量,然后在回调中设置它,我没想到它会起作用 - 但它不起作用 (!)
我有的是:
const get_twitter_video_info = (video_url) => {
var nfo = {};
try
{
videoUrlLink.twitter.getInfo(
video_url,
{},
(error, video_info) => {
if (error !== undefined)
console.log(error);
if (video_info !== undefined)
{
nfo = JSON.parse(JSON.stringify(video_info));
}
}
);
}
catch(err)
{
console.log (err);
throw(err);
}
return nfo;
}
提前致谢。
您正在尝试 return nfo,甚至在回调被调用之前。在代码中,get_twitter_video_info 将 return 一个空对象,然后 getInfo 将 return 响应和将调用回调(您使用 nfo 和 video_info 的地方)。您可以在回调本身中使用 nfo 并进一步处理,也可以使用 async/await.
如果这是一个常见问题,请原谅我,我是 JavaScript 的新手。
我正在尝试使用来自 npmjs.
的库“video-url-link”自述文件提供了以下示例:
videoUrlLink.twitter.getInfo('https://twitter.com/{@}/status/{ID}', {}, (error, info) => {
if (error) {
console.error(error);
} else {
console.log(info.full_text);
console.log(info.variants);
}
});
这很好用,但如果我希望“信息”对象在回调范围之外持续存在,我有什么选择?
我试过在 getInfo 调用之外声明一个变量,然后在回调中设置它,我没想到它会起作用 - 但它不起作用 (!)
我有的是:
const get_twitter_video_info = (video_url) => {
var nfo = {};
try
{
videoUrlLink.twitter.getInfo(
video_url,
{},
(error, video_info) => {
if (error !== undefined)
console.log(error);
if (video_info !== undefined)
{
nfo = JSON.parse(JSON.stringify(video_info));
}
}
);
}
catch(err)
{
console.log (err);
throw(err);
}
return nfo;
}
提前致谢。
您正在尝试 return nfo,甚至在回调被调用之前。在代码中,get_twitter_video_info 将 return 一个空对象,然后 getInfo 将 return 响应和将调用回调(您使用 nfo 和 video_info 的地方)。您可以在回调本身中使用 nfo 并进一步处理,也可以使用 async/await.