如何从fetch获取响应值而不是没有值的promise?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从fetch获取响应值而不是没有值的promise?相关的知识,希望对你有一定的参考价值。
我正在构建一个chrome扩展来从页面中提取数据以从数据中构建一个url,我希望将该url缩短为最终产品。在我的内容脚本文件中,我调用了url shortener来压缩链接。我不断得到一个没有价值的承诺,崩溃的反应。在devtools中,我看到callout成功完成并返回了url。
我试过异步等待,一个完整的异步函数,试图强制response.toString()
这是相关的代码部分。
var listingInfo = new Map();
listingInfo.set('Address', 'some standard address');
var tinyLink = '(http://tinyurl.com)/api-create.php?url='; //() because I can't share shortener urls on this site.
/*-----------------------------------GET LINKS--------------------------*/
if(listingInfo.has('Address')){ var mapsLink = `https://www.google.com/maps/place/${listingInfo.get('Address').replace(new RegExp(" ", "g"), '+')}`;
tinyLink = `${tinyLink}${mapsLink} `;
var dirLink = fetch(tinyLink, {
method: "GET",
mode: "no-cors",
headers: {"Content-Type": "text/html"} }).then((response)=>{
return response; });
listingInfo.set('dirLink', dirLink); }
我希望收到一个纯文本字符串,因为在devtools的网络选项卡中它显示了一个简单的字符串url而不是任何JSON,但我一直收到value=""
已解决的承诺。
答案
// made this function to use XMLHttpRequest()
const setLink = (propName, url) => {
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
var link = xhr.responseText;
console.log(`link: '${link}'`);
listingInfo.set(propName, link);
}
}
xhr.send();
}
// Then called setLink()
if(listingInfo.has('Address')){
var mapsLink =
`https://www.google.com/maps/place/${listingInfo.get('Address').replace(new
RegExp(" ", "g"), '+')}`;
dirLink = `${tinyLink}${mapsLink}`;
console.log(dirLink);
setLink('dirLink', dirLink);
console.log(dirLink);
}
以上是关于如何从fetch获取响应值而不是没有值的promise?的主要内容,如果未能解决你的问题,请参考以下文章
在spring boot中仅获取值而不是JSON响应中的键和值
如何从 fetch javascript 请求的响应中获取数据
如何从 Pandas DataFrame 中获取值而不是索引和对象类型