JẹtFightżer
а когда зарезолвится второй вызов?
JẹtFightżer
ближе к реальности там где-то появится ещё одни промис же
Dreamerinnoise
ближе к реальности там где-то появится ещё одни промис же
https://bevacqua.github.io/promisees/ Может пригодится.
Vlad
а когда зарезолвится второй вызов?
two функция принимает результат one, и возвращает результат в промисе для three
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
стримы тебе нужны для последней задачи
horpto
всм?
Vlad
ну не тебе =)
horpto
его пост чуть выше
Vlad
дурацкий телеграм
JẹtFightżer
так ты весь свой файл в память щас загоняешь
ну, там для теста вариант, да и если обработка данных, то нужен весь файл же
JẹtFightżer
сап, выноси then части в отдельные функции
да всё равно не очень удобно по-моему, функции-то там в основном уникальные
horpto
переделывай всякий частоупотребимы стафф, чтобы сразу возвращал промис и юзай и разделяй асинхронный код и синхронный.
JẹtFightżer
не для всех операций
ну конечно не для всех, но в общем случае нельзя гарантировать что стримы подойдут. в примере ничего уникального, а в реальности там же then логика какая-нибудь, которая далеко не всегда описывается композицией функций
Vlad
чтобы в then можно было сделать минимальную функцию из более маленьких и простых
JẹtFightżer
нужно больше фп!
Anonymous
сколько много интересного написали :3
Fedor
друзья, написать бота для телеграм долго? первый раз)
Fedor
простейшего, с парочкой функций
Вячеслав
легко
Вячеслав
я на python писал
Вячеслав
за вечер
Fedor
но это с учетом знания питона, так?
Fedor
констуркторов не встречали с простейшими функциями?
Вячеслав
ну там не так уж и сильно нужно было знать язык, понять работу декораторов только нужно, если раньше не встречал такого
Fedor
бота только напитоне пишут?
Vladislav 👻
Хоть на баше
Vladislav 👻
Хоть на VBA
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
Хороших вам выходных, программисты гг