使用JSON动态创建内容的函数将未定义的返回到javascript中的外部函数调用
我想为一项作业制作一个待办事项列表应用程序。代码片段如下所示使用JSON动态创建内容的函数将未定义的返回到javascript中的外部函数调用,javascript,html,json,Javascript,Html,Json,我想为一项作业制作一个待办事项列表应用程序。代码片段如下所示 函数生成器列表(){ var xhttp=newXMLHttpRequest(); xhttp.onreadystatechange=函数(){ if(this.readyState==4&&this.status==200){ var response=JSON.parse(this.responseText); var输出=”; for(设i=0;i
函数生成器列表(){
var xhttp=newXMLHttpRequest();
xhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
var response=JSON.parse(this.responseText);
var输出=”;
for(设i=0;i
文件
成功
这是因为xhttp.onreadystatechange
异步执行,并且generateList()
立即为此调用返回未定义的:
let temp = generateList(); //this just returns undefined
document.querySelector("tbody").innerHTML = temp;
在上述调用中,temp
将是未定义的
,因为函数(generateList
)没有返回任何内容(falsy
)。然后,xhttp.onreadystatechange
继续执行其通常的异步调用,获取数据并处理输出。因此,您可以在操作输出后调用另一个函数
注意,由于上述原因,返回输出代码>实际上什么都不做
所以,这就是你能做的:
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var response = JSON.parse(this.responseText);
var output = "";
for (let i = 0; i < response.length; i++) {
....
....
output += '...'
}
callFunction(output) //invoke a function with this output
// document.querySelector("tbody").innerHTML = output;
return output; //NOT needed
}
您还可以继续使用publisher
和subscriber
体系结构,在接收到响应后,一个事件将与输出一起调度,并且将有一个订阅者“监听”它,它将使用此输出。我是否可以得到实际结果?@mikhillmc现在看到,如果足够清楚,请告诉我
callFunction(output){
//here you can do anything with the output. for e.g
document.querySelector("tbody").innerHTML = output;
}