为什么我的请求承诺功能不能在Chrome浏览器中运行,而可以在Firefox或Safari中运行?

问题描述

我正在尝试使用一个脚本来抓取网页,然后使用请求承诺来解析RSS Feed。据我了解,请求承诺必须在服务器端运行,所以我在html中从外部调用脚本。我一直在使用localStorage.setItem和localStorage.getItem在外部脚本和另一个嵌入式脚本之间传递变量,该脚本将变量分配给应在整个页面中以文本形式显示的html元素。

在Chrome中,页面首次加载时为空白,但刷新一次后即可正常运行。在Firefox和Safari中,无论刷新多少次,它都保持空白。问题似乎是html无法从localStorage.getItem中“接收”变量。我怀疑这与不同浏览器处理请求承诺功能的方式有关,但是我很困惑。我在做什么错了?

这是请求承诺脚本:

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)
})

您可以在操作here中看到问题的示例。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)