我是否需要javascript承诺来完成此任务?
在深入研究之前,我不熟悉javascript承诺,我想知道在这个场景中是否需要它们 我正在发出一个ajax请求以获取数据,并在响应(新闻小部件)上创建DOM元素。我有一个搜索输入,在那里我可以过滤新闻的标题和内容。因此,在DOM中加载新闻列表后,在Keyup事件上,我可以过滤新闻的内容和标题 我知道我可以在keyup回调中包装ajax请求并请求过滤数据,但我不知道在DOM中的数据已经加载时如何处理我是否需要javascript承诺来完成此任务?,javascript,ajax,promise,Javascript,Ajax,Promise,在深入研究之前,我不熟悉javascript承诺,我想知道在这个场景中是否需要它们 我正在发出一个ajax请求以获取数据,并在响应(新闻小部件)上创建DOM元素。我有一个搜索输入,在那里我可以过滤新闻的标题和内容。因此,在DOM中加载新闻列表后,在Keyup事件上,我可以过滤新闻的内容和标题 我知道我可以在keyup回调中包装ajax请求并请求过滤数据,但我不知道在DOM中的数据已经加载时如何处理 var xhr = new XMLHttpRequest(); xhr.open("GET",
var xhr = new XMLHttpRequest();
xhr.open("GET", "data.json");
xhr.onreadystatechange = function() {
if (this.status === 200 && this.readyState === 4) {
var respneseParse = JSON.parse(this.responseText);
var articles = respneseParse.results;
var articleList = '<ul>';
articles.forEach(function(article,index){
var relatedStories = article.relatedStories;
articleList += '<li id="article" onclick= "basanti('+index+')">';
articleList += '<input type="checkbox" name="article-heading" id="article-heading'+index+'"><label for="article-heading'+index+'">'+ article.titleNoFormatting +'</label>';
articleList += '<div id="article-detail'+index+'" style="display:none">';
articleList += '<img src="'+article.image.url+'" alt="'+ article.titleNoFormatting +'" style="height:'+article.image.tbHeight+';width:'+article.image.tbWidth+';" />';
articleList += '<p>'+ article.content+'</p>';
articleList += '<a href="'+article.unescapedUrl+'"> Read more.. </a>';
if(relatedStories){
relatedStories.forEach(function(articleRelatedStories){
articleList += '<ul id="related-stories">';
articleList += '<li><a href="'+articleRelatedStories.unescapedUrl+'">'+articleRelatedStories.titleNoFormatting+'</a></li>';
articleList += '</ul>';
});
};
articleList += '</div>';
articleList += '</li>';
})
articleList += '</ul>';
document.getElementById('article-list').innerHTML = articleList;
}
};
xhr.send();
var basanti = function (index){
var articleDetail = document.getElementById('article-detail'+index+'');
var articleHeading = document.getElementById('article-heading'+index+'');
if(articleHeading.checked){
articleDetail.style.display = 'block';
}else {
articleDetail.style.display = 'none';
}
}
var xhr=new-XMLHttpRequest();
open(“GET”,“data.json”);
xhr.onreadystatechange=函数(){
if(this.status==200&&this.readyState==4){
var respneseParse=JSON.parse(this.responseText);
var articles=respnesparse.results;
var articleList=“”;
articles.forEach(功能(文章、索引){
var relatedStories=article.relatedStories;
articleList+='- ;
articleList+=''+article.titlenoformating+'';
articleList+='';
articleList+='';
articleList+=''+article.content+'';
articleList+='';
如果(相关故事){
relatedStories.forEach(函数(articleRelatedStories){
articleList+='
;
articleList+='';
articleList+='
';
});
};
articleList+='';
articleList+=' ';
})
articleList+='
';
document.getElementById('article-list')。innerHTML=articleList;
}
};
xhr.send();
var basanti=函数(索引){
var article-detail=document.getElementById('article-detail'+index+'');
var articleHeading=document.getElementById('article-heading'+index+'');
如果(文章标题。选中){
articleDetail.style.display='block';
}否则{
articleDetail.style.display='none';
}
}
看看这些承诺是非常有用的,但在这个具体问题上不会有什么不同。如果您只是想知道DOM何时完成加载,那么请查看codenathan在前面的注释中的链接。