Цитата:
На астрофоруме повторно + можно ставить только через 72 часа. Мне кажется было бы разумно |
Цитата:
я как-то одному челу карму дрочил, только три раза минусанул, потом психанул :) |
И по теме - а чем промисы(не называйте их обещаниями, не трахайте мой девственный мозг)))) так не удобны? - http://learn.javascript.ru/promise
|
Удобность - понятие относительное. Относительно традиционных коллбеков - да, штука классная. Относительно async/await - то еще говно:
//async/await async function loadUser(id) { let user; try { let response = await fetch(`/api/users/${id}`); user = response.body; } catch (error) { console.error(error); } return user; } //Promises function loadUser(id) { return new Promise((resolve) => { fetch(`/api/users/${id}`).then((response) => { return response.body; }).catch((error) => { console.log(error); return undefined; }).then((user) => { resolve(user); }); }); } И это простейший пример, без нескольких поочередных запросов и без циклов. |
Цитата:
========================= До Babel //async/await async function loadUser(id) { let user; try { let response = await fetch(`/api/users/${id}`); user = response.body; } catch (error) { console.error(error); } return user; } После Babel //async/await "use strict"; function loadUser(id) { var user, response; return regeneratorRuntime.async(function loadUser$(context$1$0) { while (1) switch (context$1$0.prev = context$1$0.next) { case 0: user = undefined; context$1$0.prev = 1; context$1$0.next = 4; return regeneratorRuntime.awrap(fetch("/api/users/" + id)); case 4: response = context$1$0.sent; user = response.body; context$1$0.next = 11; break; case 8: context$1$0.prev = 8; context$1$0.t0 = context$1$0["catch"](1); console.error(context$1$0.t0); case 11: return context$1$0.abrupt("return", user); case 12: case "end": return context$1$0.stop(); } }, null, this, [[1, 8]]); } немножко "не удобный" код... =================== ПОМОГИТЕ! Как при помощи fetch отправить POST запрос?! я делаю так var result = fetch('server.php?tesh=gjkhkj', { method: 'post', body: 'test=kosbeg&kosbeg=test' }) result.then(function(response) { return response.text() }).then(function(text) { console.log(text) })['catch'](function(ex) { // так ['catch'], а не так .catch из-за корявого полифила... console.log('fail') }) } на сервере так <?php print_r($_GET).'/n'; print_r($_POST).'/n'; к консоли массив $_POST пустой... как исправить?! |
PS: мир сошел с ума: я использую fetch вместо православного аякса,
и я учусь писать код на es6... проблемму решил: var result = fetch('server.php?tesh=gjkhkj', { method: 'post', *!* headers: { "Content-type": "application/x-www-form-urlencoded; charset=UTF-8" }, */!* body: 'test=kosbeg&kosbeg=test' }) result.then(function(response) { return response.text() }).then(function(text) { console.log(text) })['catch'](function(ex) { // так ['catch'], а не так .catch из-за корявого полифила... console.log('fail') }) } БЛЯ! довбаные хедеры не поставил... |
KosBeg,
Ну и чем это лучше обычного fetch=function(url, body){ return new Promise(function(resolve, reject){ with(new XMLHttpRequest){ open("POST", url) send(body) onreadystatechange=function(){ if(readyState==4){ if(status!=200) return reject(status) resolve(responseText) } } } }) } fetch("foo", "foo=bar&bar=baz") .then(function(s){alert(s)}) .catch(function(s){console.log(s)}) ? |
Цитата:
Ну, и вдобавок есть такие мелочи, как работа в строгом режиме, уместность в модульном окружении, поддержка отличных от GET запросов, поддержка установки заголовков, чтения заголовков и т.д. Кстати, чо там с множественным наследованием и решением задачи, которую тебе Кобеззза в ответ задал? |
Цитата:
Но, в принципе, да - без использования ES Harmony аналогичный по функциональности код выглядел бы именно так. Цитата:
Цитата:
Цитата:
fetch('server.php?tesh=gjkhkj', { method: 'post', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ test: 'kosbeg', kosbeg: 'test', }) }) Во-вторых, зачем указывать кодировку UTF8 в content-type? Она же и так дефолтная. Вобще, загляни на https://github.com/github/fetch#usage, там весьма хорошая памятка. |
Цитата:
|
Часовой пояс GMT +3, время: 22:24. |