我正在构建一个程序,它将excel文件作为上传,解析特定文本,然后将该文本(或相关信息)附加到我的html主体。
我的程序的一部分将URL作为输入并找到最终的URL(重定向后的最终登录页面)。我发现这样做的一种方法是使用XMLHttpRequest的responseURL属性。这当前发生在for循环中。我发现,如果我试图将它直接附加到控制台(没有承诺),它将显示为空白(我相信因为ResponseURL是异步的,并且在我尝试追加时尚未完成)。所以我发现承诺是一种潜在的解决方案。我的问题是,当它是for循环的一部分时,我不知道如何正确地实现promise。
为了澄清,我有一个数组中的URL列表。然后我逐个浏览一个URL,提取信息(这是我使用responseURL的地方),然后我将该信息附加到我的HTML正文,然后转到下一个URL做同样的事情。我尝试了各种方法,但它们都以不同的方式打破了我的计划。
我的目标是使用promise异步运行responseURL,并在完成后将结果附加到html。以下是我目前实现的代码:
回复网址功能
function finalURLGrabber(ID) {
return new Promise(function(resolve) {
var xhr = new XMLHttpRequest();
xhr.open('GET', ID, true);
xhr.onload = function() {
resolve(xhr.responseURL);
};
xhr.send(null);
});
}
for循环中的代码
$('#body').append(Image Source</h2><div class="imageSource content">' + finalURLGrabber(imageSource).then(function(value) {
return value;
}) + '</div></div>');
当我运行该功能时,附加在身体上的是“对象承诺”&#39;而不是最终的网址。
我的问题如下: