fetch Promise никога не се изпълнява

Използвам nativescript, за да разработя приложение за android. Имам нещо подобно

var fetchModule = require("fetch");
fetchModule.fetch("http://202.120.227.11/")
    .then(function(resp){
        console.log(JSON.stringify(resp));
        return resp;
    })
    .catch(function(err){
        console.log(JSON.stringify(err));
        return err;
    });

но блокът then никога не се изпълнява. И понякога блокът catch се изпълнява и дава мрежова грешка. Но и в двата случая заявката се изпраща и отговорът се получава гладко според моите tcpdump записи.

И така, изглежда, че nativescript е филтрирал отговора по някаква причина.

Някой изпитвал ли е това?


person onemach    schedule 15.03.2016    source източник


Отговори (2)


Имайте предвид, че вашият resp е Response обект, ако искате прочетете съдържанието му, трябва да използвате една от неговите функции: arrayBuffer, петно, formData, json или текст.

Тези функции четат отговора до завършване и връщат обещание, което се разрешава с прочетената стойност.

Например,

fetch("http://202.120.227.11/")
.then(function(resp){
  return resp.json();
})
.then(function(val) {
  console.log(JSON.stringify(val));
  return val;
});
person Marco Castelluccio    schedule 15.03.2016

Знам, че е супер късно, но просто исках да публикувам, в случай че някой се натъкне на същия проблем. Сблъсквах се със същия проблем с NativeScript и моето решение беше да защитя моя сайт/крайни точки. Политиката за сигурност на транспорта на приложението изисква използването на защитена връзка. Следователно http няма да работи. Трябва да се свържете чрез https.

person Dillon Lundell    schedule 16.02.2017