我是javascript的新手,我尝试使用XMLHttpRequest创建异步http请求。为了说明,我有以下代码:
function launchRequest(request, callback) {
var xhr = new XMLHttpRequest();
xhr.open("POST", "/api", true);
xhr.onload = function(e) {
callback(xhr.responseText);
}
xhr.send(JSON.stringify(request));
}
function getAlbums(callback) {
launchRequest({
"command" : "getfolders"
}, callback);
}
function getPhotosFromAlbum(albumId, callback) {
launchRequest({
"command" : "getphotos",
"arguments" : {
"foldername" : albumId
}
}, callback);
}
getAlbums(function(result) {
document.write('first callback <br/>');
});
getAlbums(function(result) {
document.write('second callback <br/>');
});
所需的行为是调用两次回调函数,但观察到的行为是第一个函数被调用一次而页面停止。
我已经读过原因可能是重复使用xhr但是,如果我错了,请纠正我,初始化强制变量在函数的范围内。
答案 0 :(得分:0)
在文档加载后调用document.write
时,整个文档都会被覆盖,所以一切都消失了。
在异步函数的回调中调用document.write
肯定会在文档最初加载之后。
将其更改为
var element = document.getElementById('result');
element.innerHTML += 'first callback <br/>';
并确保在DOM中有一个具有该ID的元素