Javascript 为什么我的请求承诺功能可以在Chrome中运行,而不能在Firefox或Safari中运行?
我正在尝试使用一个脚本来创建一个网页,该网页使用requestpromise抓取并解析RSS提要。据我所知,requestpromise必须运行服务器端,所以我在html中外部调用脚本。我一直在使用localStorage.setItem和localStorage.getItem在外部脚本和另一个嵌入式脚本之间传递变量,该脚本将变量分配给html元素,这些元素应该作为文本显示在整个页面中 在Chrome中,当页面第一次加载时,它是空白的,但在我刷新一次之后,它就可以正常工作了。在Firefox和Safari中,无论我刷新多少次,它都保持空白。问题似乎是html没有从localStorage.getItem“接收”变量。我怀疑这与不同浏览器处理请求承诺函数的方式有关,但我被难住了。我做错了什么 以下是请求承诺脚本:Javascript 为什么我的请求承诺功能可以在Chrome中运行,而不能在Firefox或Safari中运行?,javascript,html,asynchronous,request,request-promise,Javascript,Html,Asynchronous,Request,Request Promise,我正在尝试使用一个脚本来创建一个网页,该网页使用requestpromise抓取并解析RSS提要。据我所知,requestpromise必须运行服务器端,所以我在html中外部调用脚本。我一直在使用localStorage.setItem和localStorage.getItem在外部脚本和另一个嵌入式脚本之间传递变量,该脚本将变量分配给html元素,这些元素应该作为文本显示在整个页面中 在Chrome中,当页面第一次加载时,它是空白的,但在我刷新一次之后,它就可以正常工作了。在Firefox和
var xmltext
var latlonquery, latquery, lonquery, url
const rp = require('request-promise')
const options = {
headers: {'user-agent': 'node.js'}
}
function doQuery() {
latlonquery = new URLSearchParams(window.location.search)
latquery = latlonquery.get("lat")
lonquery = latlonquery.get("lon")
url = "https://forecast.weather.gov/MapClick.php?lat=" + latquery + "&lon=" + lonquery + "&FcstType=digitalDWML"
}
function doRequest() {
return rp(url,options).then(function(html){
return html
})
}
doQuery()
doRequest().then(function(html){
xmltext = html
localStorage.setItem("xml_says_this", xmltext)
localStorage.setItem("lat_says_this", latquery)
localStorage.setItem("lon_says_this", lonquery)
})
您可以看到一个实际问题的示例。据我所知,在浏览器方面不支持require。Chrome可能是一个例外,但方法是通过
-tag排除外部库。在初始化之前,还可以访问temp图表中的datehour
。第一个问题出现在第一行:var xmltext=localStorage.getItem(“xml”表示“this”),当xmltext为null时……这是一个专门针对网络请求的问题。我也可以复制它:在Firefox上,weather.gov的响应负载是空的,但它是在Chrome上填充的。在我修复本地存储后,它在ff上工作