Удаление точек с запятой между каждым вызовом .then
.
Обещания используют своего рода "монадный" шаблон: каждый метод в обещании возвращает другое обещание, которое имеет тот же API.Это означает, что вы можете бесконечно связывать методы обещаний.
Итак:
fetch()
.then(/* stuff */)
.then(/* more stuff */)
.catch(/* even more stuff */); // <-- this is the only semicolon
То же самое верно для многих методов Array, поэтому вы часто будете видеть код, подобный этому:
Object.keys( someObj ) // returns an array
.map(/* iterator function */) // Array.map returns an array
.filter(/* iterator function */) // Array.filter returns an array
.sort(/* comparator function */); // Array.sort returns an array
Опять же, нужна только одна точка с запятой, потому что каждый шаг оператора создает массив, и JS позволяет вам предвидеть это.
Если это не поможет, вы можете отправить сообщениеошибка, которую вы получаете.
Я должен добавить, что result.json()
будет выдавать, если сервер на http://localhost:3000/show
не сможет предоставить HTTP-заголовок Content-Type: application/json
.Даже если тело ответа является полностью допустимым JSON, класс HTTPResponse отказывается делать .json()
, если сервер не сообщает, что содержимое является json.
Кроме того, если этот код выполняется в браузере, иобслуживается с другого хоста (или порта), вам нужно будет делать CORS.См. https://stackoverflow.com/a/48287868/814463 для возможной помощи.