JẹtFightżer
а когда зарезолвится второй вызов?
JẹtFightżer
ближе к реальности там где-то появится ещё одни промис же
Dreamerinnoise
Vlad
https://github.com/mattdesl/promise-cookbook
Vlad
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
Vlad
несколько раз в месяц даю эти ссылки
JẹtFightżer
несколько раз в месяц их читаю, лол
Serhii
Прикрепить в шапку
Vlad
ну тогда, надо прочитать один раз внимательно
JẹtFightżer
разобрался, так вот, как теперь избавится от new Promise в каждом then, писать обёрточку?
JẹtFightżer
у меня получилось так, что надо из then возвращать промис
Nikolay
на purescript что нибудь толковое написано?
JẹtFightżer
var p = new Promise( (res, rej) => setTimeout( () => res("hi!"), 1000) )
.then( d => new Promise( (res, rej) => {console.log(2); setTimeout(res, 1000) } ) )
.then( d => console.log(3))
хотелось бы не писать каждый раз new Promise
Nikolay
@JetFightzer что сделать хочешь?
JẹtFightżer
да просто цепочку асинхронных действий, просто не нравится писать промисы каждый раз
JẹtFightżer
вместа таймаута там можт быть чтение с диска, например
Nikolay
ну тебе нужно чтобы каждое твое асинхронное действие возвращало промис
Nikolay
я для себя вот эту штуку написал
https://github.com/JiLiZART/sequence-as-promise (не реклама)
Nikolay
есть кстате пакеты которые умеют работать с fs и возвращать промисы
Nikolay
я свою штуку для ajax запросов использую
Nikolay
+ вывести значения куданибудь
JẹtFightżer
годная штука, я хочу так же, но цепочкой вызовов функций (по сути одно и то же, ситаксис иной)
Nikolay
ну в моем поделии можно миксовать промисы и функции
horpto
function asyncTimeout(td) {
return new Promise((resolve, reject) => {
setTimeout(resolve, reject);
});
}
p = Promise.resolve().next( () => {
return asyncTimeout(1000).then(() =>"hi")
}).then( d => {
console.log(2);
return asyncTimeout(1000)
}).then( () => {
console.log(3);
})
horpto
var p = new Promise( (res, rej) => setTimeout( () => res("hi!"), 1000) )
.then( d => new Promise( (res, rej) => {console.log(2); setTimeout(res, 1000) } ) )
.then( d => console.log(3))
хотелось бы не писать каждый раз new Promise
Nikolay
я делаю [fetchPost(), displayPost, fetchCommentsByPost(), displayComments]
JẹtFightżer
сделал вот такую штуку которая как-то так используется:
let a = async(reader("a.txt"))
.then(log)
.then(writer("a.2.txt"))
.catch(function(err) { console.log(new Error("A")) })
ридер и райтер = функции которые возвращают функции читающие/пишущие в файл. ошибки пробрасываются, поэтому при отсутствии а.тхт сработает catch
JẹtFightżer
норм решение?
Nikolay
а что не на стримах?
horpto
ну, вариант.
Nikolay
так ты весь свой файл в память щас загоняешь
Vlad
Vlad
стримы тебе нужны для последней задачи
Vlad
horpto
всм?
Vlad
ну не тебе =)
Vlad
horpto
его пост чуть выше
Vlad
Vlad
дурацкий телеграм
Vlad
Vlad
horpto
переделывай всякий частоупотребимы стафф, чтобы сразу возвращал промис и юзай и разделяй асинхронный код и синхронный.
JẹtFightżer
не для всех операций
ну конечно не для всех, но в общем случае нельзя гарантировать что стримы подойдут.
в примере ничего уникального, а в реальности там же then логика какая-нибудь, которая далеко не всегда описывается композицией функций
JẹtFightżer
Vlad
Vlad
чтобы в then можно было сделать минимальную функцию из более маленьких и простых
JẹtFightżer
нужно больше фп!
Anonymous
сколько много интересного написали :3
Fedor
друзья, написать бота для телеграм долго? первый раз)
Fedor
простейшего, с парочкой функций
Вячеслав
легко
Вячеслав
я на python писал
Вячеслав
за вечер
Fedor
но это с учетом знания питона, так?
Fedor
констуркторов не встречали с простейшими функциями?
Вячеслав
ну там не так уж и сильно нужно было знать язык, понять работу декораторов только нужно, если раньше не встречал такого
Fedor
бота только напитоне пишут?
Vladislav 👻
Хоть на баше
Vladislav 👻
Хоть на VBA
Serhii
Ппцтупые примеры
Serhii
Serhii
Столько либ уже , обписаться
Serhii
От слова писать
Bushrut
скажите плиз, синхронный метод чтения файла работает быстрей чем асинхронный ?
Fedor
писать или писать?
Yuliia
да, синхронный метод чтения файла работает быстрее
Nikolay
@Teac_j но он блокирует основной поток выполнения программы
Bushrut
я тестирую чтение файла, и асинхронный вызываю первым. В консоел ответ по синхронному получаю раньше чем асинхронный
Bushrut
$ node readFile.js
Done in sync 1486780 nanoseconds
Done in async 29085268 nanoseconds
Anonymous
а какой тест, можешь показать?
Bushrut
var fs = require('fs');
var begin = process.hrtime()[1];
var fclcAsync = fs.readFile('clickerHeroSaveJson.txt', {encoding: 'utf8'}, function (err, data) {
if (err) throw err;
var end = process.hrtime()[1];
console.log("Done in async " + (end-begin) + " nanoseconds");
});
var begin2 = process.hrtime()[1];
var fclcSync = fs.readFileSync('clickerHeroSaveJson.txt', {encoding: 'utf8'});
var end2 = process.hrtime()[1];
console.log("Done in sync " + (end2-begin2) + " nanoseconds");
Serhii
Я думал что одинаковое время
Serhii
Так как потоков в жс нету
Serhii
Но это наверное было бы в веб а не ноде
Serhii
С горя напьюсь
Serhii
Хороших вам выходных, программисты гг