2016-03-15 3 views
3

Я использую nativescript для разработки приложения для Android. У меня есть что-то вродеfetch Promise никогда не запускается

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 отфильтровал ответ по какой-то причине.

Неужели кто-нибудь испытал это?

ответ

4

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

Эти функции считывают ответ на завершение и возвращают обещание, которое разрешается с использованием значения чтения.

Например,

fetch("http://202.120.227.11/") 
.then(function(resp){ 
    return resp.json(); 
}) 
.then(function(val) { 
    console.log(JSON.stringify(val)); 
    return val; 
}); 
0

Я знаю, что это супер поздно, но я просто хотел отправить упаковывают кому попадается этот же вопрос. Я столкнулся с той же проблемой с NativeScript, и моим решением было защитить мой сайт/конечные точки. Для политики безопасности приложений для транспорта требуется использование безопасного соединения. Поэтому http не будет работать. Вы должны подключиться через https.

Смежные вопросы