Цитата:
На астрофоруме повторно + можно ставить только через 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, время: 05:05. |