n00b问题在这里。 我在函数内部有一个变量,我想在另一个函数中使用它。 对于一些我的理由我不能这样做,可能是一些我遗漏的小问题......
function getIDs() {
Parse.initialize("mycode", "mycode");
var recipeObject = Parse.Object.extend("mycode");
var query = new Parse.Query(recipeObject);
query.notEqualTo("objectId", "mycode");
query.find({
success: function(results) {
for (var i = 0; i < results.length; i++) {
var object = results[i];
var objectIdent = object.id;
var objectText = object.get('recipe_text');
var getObject = query.equalTo("objectId", objectIdent);
console.log(object.id);
}
},
error: function(object, error) {
alert("fail");
}
});
}
//Here I am trying to acces the object.id object and just can't get it..
console.log(object.id);
提前致谢!
答案 0 :(得分:1)
这是scope
的问题,你可以这样做(假设最后一行:console.log(object.id);
位于最高范围级别):
Parse.initialize("mycode", "mycode");
var recipeObject = Parse.Object.extend("mycode");
var query = new Parse.Query(recipeObject);
query.notEqualTo("objectId", "mycode");
query.find({
success: function(results) {
for (var i = 0; i < results.length; i++) {
var object = results[i];
var objectIdent = object.id;
var objectText = object.get('recipe_text');
var getObject = query.equalTo("objectId", objectIdent);
window.object = object; // make object available at a window scope
console.log(object.id);
}
},
答案 1 :(得分:1)
不是100%肯定,但你可以尝试不使用var关键字。
var关键字使其范围特定于{}。
答案 2 :(得分:0)
这篇文章告诉我,我需要在我的函数中创建另一个函数才能访问变量。 How do you reference a custom object outside of the function it was created in with JavaScript? 所以我去了这样添加:
function getIDs() {
Parse.initialize("mycode", "mycode");
var recipeObject = Parse.Object.extend("mycode");
var query = new Parse.Query(recipeObject);
query.notEqualTo("objectId", "mycode");
query.find({
success: function(results) {
for (var i = 0; i < results.length; i++) {
var object = results[i];
var objectIdent = object.id;
var objectText = object.get('recipe_text');
var getObject = query.equalTo("objectId", objectIdent);
function internalShit(){
console.log(objectIdent);
}
internalShit();
}
},
}
},
error: function(object, error) {
alert("fail");
}
});
}
答案 3 :(得分:0)
初始代码IMO存在两个问题。一个是上面指出的范围问题。另一个是“异步”问题。请记住,当您调用Parse时,它是一个异步调用。这意味着它将发出请求并继续执行其余代码。无法保证何时会回复您的“成功:”代码。
在下面的示例中,query.find将发送请求并继续执行console.log作为下一行。在获得响应之前,它不会执行“success:...”代码,这很可能是在console.log之后。因此,consol.log很可能输出“not”。
var done = "not";
... Parse Query Initialization...
query.find({
success: function(results) {
done = "done!";
} ...error handling etc
console.log(done); //will most likely log "not"
保证响应后执行代码的唯一方法是将其置于成功或错误块中。
祝你好运!