我是dojo的新手,我正在尝试按特定顺序分配变量。这是一个例子:
require(["dojo/request"], function(request){
var myVar;
request("helloworld.txt").then(
function(text){
myVar = text;
alert(myVar); //2nd alert to display and contains contents of helloworld.txt
},
function(error){
console.log("An error occurred: " + error);
}
);
alert(myVar); //1st alert to display and displays undefined
});
我需要在“.then”函数内部分配myVar,然后在该函数之外使用它。换句话说,我需要第一个警报来包含helloworld.txt的内容。提前谢谢!
答案 0 :(得分:0)
确保您了解回调和异步代码!这些是Javascript中的绝对基本概念,所以通过阅读它,你会给自己一个大忙。
它的解释远比我多次好,所以我会给你留下一些链接(以及快速完成你想要的东西)。
即使您没有阅读这些链接,也必须记住以下内容:仅因为第10行在您的Javascript代码中位于第100行之前,并不意味着第10行将在第100行之前运行。 强>
Dojo的request
函数返回一个名为“Promise”的东西。这个承诺允许你说“嘿,将来,在你完成我刚刚告诉你的事情后,运行这个功能!” (您使用then
函数执行此操作,就像您已完成的那样。)
如果您发现这一点令人困惑,请记住,promises在很多方面只是您在许多其他框架或脚本中看到的onSuccess
或onError
属性的包装。
伟大的是then
也会带来新的承诺!所以你可以将它们“链接”在一起:
require(["dojo/request"], function(request){
var myVar;
request(
"helloworld.txt"
).then(
function(text){
myVar = text;
alert("First alert! " + myVar);
},
function(error){
console.log("An error occurred: " + error);
}
).then(
function() {
alert("Second alert! " + myVar);
}
);
});
Promise也有其他优点,但我不会在这里进行。