我正在构建一个chrome扩展程序,以从页面中提取数据以从数据中构建一个url,我希望将该url缩短为最终产品。在我的内容脚本文件中,我调出一个URL缩短器来压缩链接。我不断得到一个没有价值的承诺,崩溃会做出反应。在devtools中,我看到标注已成功完成,并且返回了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=""
的已解决承诺。
答案 0 :(得分:0)
// 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);
}