Как получить значение ответа из выборки вместо обещания без значения? - PullRequest
0 голосов
/ 25 апреля 2019

Я создаю расширение Chrome для извлечения данных со страницы, чтобы создать URL из данных, и я хочу, чтобы этот URL был сокращен как конечный продукт. В моем файле скриптов контента я обращаюсь к сокращающему URL, чтобы сжать ссылку. Я продолжаю получать обещание без значения, на которое реагируют сбои. В devtools я вижу, что вызов выполнен успешно, и URL возвращается.

Я пробовал async await, полную асинхронную функцию, пытался форсировать 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="".

1 Ответ

0 голосов
/ 26 апреля 2019
// 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);


}
...