gpt4 book ai didi

javascript - 无法访问 Meteor 事件中的变量

转载 作者:行者123 更新时间:2023-11-28 06:55:35 24 4
gpt4 key购买 nike

当我触发点击事件时,此函数运行:

'click h2.start1': function () {
var genreName;
//generate random number
function getGenreNumber () {
numGenre = Math.floor((Math.random() * 500) + 1); //total genres: 1381
console.log('genre index number: ' + numGenre);
return numGenre
};
//http.get genre with number genre/list
function getGenreName () {
HTTP.get('someurl',
{},
function (error, result) {
if (result.statusCode === 200) {
genreName = result.data.response.genres[numGenre].name;
console.log('The genre is: ' + genreName);
}
return genreName
});
};
//http.get 15 artists of genre genre/artist
function getGenreArtists () {
console.log('genreName is: ' + genreName); //this is undefined
HTTP.get('someurl' + genreName,
{},
function (error, result) {
if (result.statusCode === 200) {
console.log(result.data.response);
console.log(genreName);
}else {
console.log("something broke");
console.log(genreName); //this is exactly as it should be!
}
});
};
getGenreNumber()
getGenreName()
getGenreArtists()
},

我正在尝试做两件事,首先,将变量 genreName 的值传递到函数 getGenreArtists 中的 GET 请求的 URL 中。

getGenreArtists 中的第一个 console.log 返回未定义,但“somethingbroken”行下的 console.log 返回正确。

我很困惑,因为两个函数具有相同的作用域,并且函数 getGenreName 能够正确访问变量 numGenre

我想做的第二件事是用 genreName 中的 + 替换所有空格,以便 GET 请求的 URL 格式正确。

最佳答案

这是一个普通的异步问题。一般来说,如果您想对异步事件中的数据执行某些操作,则可以传递回调(或使用 Promise)。例如,您的 getGenreName 看起来更像是这样:

function getGenreName(callback) {
HTTP.get('someurl', {}. function (error, result) {
if (result.statusCode === 200) {
callback(result.data.response.genres[numGenre].name);
}
});
}

然后这样调用它:

getGenreName(function (name) {
console.log('the name of the genre is: ' + name);
});

关于javascript - 无法访问 Meteor 事件中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32595267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com