Release V8 5.5 24 октября (два дня до выхода node 7). В этом релизе представлены async\await функции. Баг с утечкой исправлен 16 сентября, v8 5.4 был зарелизен 9 сентября
Да, вы правы. На самом деле я не использую next как промис. Вместо того чтобы формировать массив промисов, я итерирую массив объектов, по которым нужно сделать последовательные ассинхронные вызовы и в then() создаю анонимную функцию возвращающую промис. Т.е. это как раз фабрика о которой шла речь.
Виноват, что бездумно упростил свой вариант без проверки и выдал как верный.
Т.к. я не Java программист, то делаю таким образом:
function executeSequentially(promises) {
var result = Promise.resolve();
promises.forEach(function (promise) {
// result = result.then(promise);
result = result.then(() => promise);
});
return result;
}
Сверху и снизу вы видите абсолютно идентичные по функциональности сниппеты.
Но это не так, в случае с промисами вам достаточно вызвать функцию. В случае с генераторами вам нужно вызвать функцию и построить цепочку промисов самостоятельно, попутно возвращая в next() полученное значение. Поправьте если я ошибаюсь.
// Вызов варианта с промисом
renderUserData();
// Вызов варианта с генератором
let generator = renderUserData();
generator.next().value
.then(user => generator.next(user).value)
.then(paymentDetails => generator.next(paymentDetails ).value)
Очень похоже на то, что мы использовали генератор ради использования генератора. Возможно вы скажете, что внешний вызов генератора можно отдать на откуп сопрограммам типа co.js — соглашусь, что это позволяет получать некий профит.
Смысл в том, что генераторами нельзя заменить промисы (для асинхронных вызовов). Вообще никак. Async\await — да, киллер фича, нас ждет светлое будущее (заглянуть в будущее уже можно с помощью babel и подобных)
function* renderUserData(render) {
let user = yield getUser();
let paymentDetails = yield getUserDetails(user.payment.id);
render(paymentDetails);
}
первый yield вернет user? Нет, он вернет promise, которого где то снаружи функции нужно дождаться, чтобы снова вызвать next(), тоже самое для getUserDetails(). Код не полный, а приводится как довод в пользе генераторов.
Почему бы не совметить два подхода? Есть некая станция с запасом топлива, манипуляторами и несколькими буксирами. Буксир отправляется к цели, захватывает цель и летит к станции. Там производится заправка и затем пуск спутника. Станций может быть несколько, чтобы снизить топливозатраты. На станциях могут работать люди. Можно выполнять не только заправку, но и ремонт, апгрейд.
$.post('/url', {data: 'data'}, onResponseCallback1);
function onResponseCallback1() {
$.post('/url', {data: 'data'}, onResponseCallback2);
}
function onResponseCallback2() {
//...
}
На ноде с промисами:
Promise.resolve()
.then(onResponseCallback1)
.then(onResponseCallback2)
.catch(onError)
function onResponseCallback1(data) {
return data;
}
function onResponseCallback2(data) {
return data;
}
// Для обработки ошибок
function onError() {}
Никаких пирамид, функции можно делать чистыми, на мой взгляд более нагляден порядок выполнения. Возможно известная практика, на открытие Америки не претендую.
Услуга виртуального номера это дополнительные расходы (>10$ в месяц) и дополнительные риски.
Для подтверждения адреса проживания большинство сервисов просит один из документов:
1. Выписка из банка (bank statement) — где указано имя и адрес.
2. Счет за коммунальные услуги (кроме интернет и мобильной связи), гдеуказано имя и адрес
3. Документ выданный государством, где указано имя и адрес.
Вероятно еще какие то опции. Имя и адрес должны совпадать с ранее указанными. Документ должен быть выдан не позднее трех месяцев.
Судя по описанию, я как раз нахожусь в вашей целевой аудитории, как частый путешественник, который подолгу живет в какой то точке мира. Ранее я жил в Китае и пользовался китайской картой и биткойн биржей и всё было прекрасно. Уже несколько месяцев я пытаюсь найти приемлемый способ обмена биткоин на доллары или евро и не могу, скрыте комиссии, изменненный курс, долгие сроки, невыполнимые условия.
Приемлемость на примере китайской биржи:
1. Возможность обмена биткойн на фиат и обратно без комиссий, иногда на бирже поиграть.
2. Вывод в наличные c минимальной комиссией, у китайцев например 0.38% или минимум 2 юаня. В сравнении Bitstamp написано $15, но сняли $50 и сказали что это не они, а кто то другой.
3. Срок вывода не более суток.
4. Дешевый старт. Карта за 10 юаней или за ~$17 — разница имеет значение, причем долларовую каждый год перевыпускать за доп плату, когда как китайская с неограниченным сроком.
5. Скорость старта. В Китае карту делают за полчаса в банке, попробовать какой то сервис можно за один день. Долларовую же могут за $50 могут курьером за 4-5 дней прислать.
Я понимаю, что разница в процессингах Китая и запада значительная, но меня как обывателя это не волнует.
1. По поводу снятие фиатных денег в банкомате с виртуальной карты при помощи телефона поподробней можно? Был уверен, что виртаульные карты только для оплаты в интернете.
2. На сайте указан ежемесечный платеж в 1$ за смс уведомление, которое обязательное. Т.е. требуется привязка к телефонному номеру. Я, как человек, часто меняющий место жительства всегда испытывал проблемы с тем что при переезде оказывался в ситуации когда имелся новый номер, но не было доступа к старому. Можно ли не привязывать номер мобильного?
3. Многие подобные сервисы требует подтверждения места проживания. Необходимо ли это у вас? Если да, то необходимо ли повторно подтверждать при смене места проживания?
Добавление к своему сложному паролю окончания сайта (сервиса) мне кажется плохой практикой. Если один из паролей будет уведен, то остальные могут быть подобраны. Например, забылись и залогинились в кафе с вайфая на vk.com c паролем «Рождественское утро 2015 vk.com». Злоумышленник будет очень рад когда обнаружит, что «Рождественское утро 2015 gmail.com» то же работает.
Хорошей практикой считаю использование keepass. Генерирует пароли сразу за звездочками, для копирование не нужно видеть пароль, при вставке тоже одни звездочки. Как итог, я даже никогда не видел большую часть паролей. Пользуюсь года четыре.
Всего в памяти два пароля: база keepass и Gmail (с двухфакторной авторизацией).
Это короткий номер телефона службы поддержки жд. В Китае многие сервисы имеют 5ти значный номер службы поддержки и сайт с таким же адресом. (10010, 10086)
Почему именно этот номер я не знаю. Вероятно это регулируется государством (выдача номера, требование к названию сайта и т.д.)
Для навигации по сущностям я использую ctrl + click, первый клик переносит к определению, второй — загружает список всех мест использования.
Баг с утечкой исправлен 16 сентября, v8 5.4 был зарелизен 9 сентября
Виноват, что бездумно упростил свой вариант без проверки и выдал как верный.
Через reduce еще изящней
Но это не так, в случае с промисами вам достаточно вызвать функцию. В случае с генераторами вам нужно вызвать функцию и построить цепочку промисов самостоятельно, попутно возвращая в next() полученное значение. Поправьте если я ошибаюсь.
Очень похоже на то, что мы использовали генератор ради использования генератора. Возможно вы скажете, что внешний вызов генератора можно отдать на откуп сопрограммам типа co.js — соглашусь, что это позволяет получать некий профит.
Смысл в том, что генераторами нельзя заменить промисы (для асинхронных вызовов). Вообще никак. Async\await — да, киллер фича, нас ждет светлое будущее (заглянуть в будущее уже можно с помощью babel и подобных)
первый yield вернет user? Нет, он вернет promise, которого где то снаружи функции нужно дождаться, чтобы снова вызвать next(), тоже самое для getUserDetails(). Код не полный, а приводится как довод в пользе генераторов.
WeakMap, WeakSet — не содержат и не должны, иначе они бы не были Weak
На ноде с промисами:
Никаких пирамид, функции можно делать чистыми, на мой взгляд более нагляден порядок выполнения. Возможно известная практика, на открытие Америки не претендую.
Для подтверждения адреса проживания большинство сервисов просит один из документов:
1. Выписка из банка (bank statement) — где указано имя и адрес.
2. Счет за коммунальные услуги (кроме интернет и мобильной связи), гдеуказано имя и адрес
3. Документ выданный государством, где указано имя и адрес.
Вероятно еще какие то опции. Имя и адрес должны совпадать с ранее указанными. Документ должен быть выдан не позднее трех месяцев.
Судя по описанию, я как раз нахожусь в вашей целевой аудитории, как частый путешественник, который подолгу живет в какой то точке мира. Ранее я жил в Китае и пользовался китайской картой и биткойн биржей и всё было прекрасно. Уже несколько месяцев я пытаюсь найти приемлемый способ обмена биткоин на доллары или евро и не могу, скрыте комиссии, изменненный курс, долгие сроки, невыполнимые условия.
Приемлемость на примере китайской биржи:
1. Возможность обмена биткойн на фиат и обратно без комиссий, иногда на бирже поиграть.
2. Вывод в наличные c минимальной комиссией, у китайцев например 0.38% или минимум 2 юаня. В сравнении Bitstamp написано $15, но сняли $50 и сказали что это не они, а кто то другой.
3. Срок вывода не более суток.
4. Дешевый старт. Карта за 10 юаней или за ~$17 — разница имеет значение, причем долларовую каждый год перевыпускать за доп плату, когда как китайская с неограниченным сроком.
5. Скорость старта. В Китае карту делают за полчаса в банке, попробовать какой то сервис можно за один день. Долларовую же могут за $50 могут курьером за 4-5 дней прислать.
Я понимаю, что разница в процессингах Китая и запада значительная, но меня как обывателя это не волнует.
2. На сайте указан ежемесечный платеж в 1$ за смс уведомление, которое обязательное. Т.е. требуется привязка к телефонному номеру. Я, как человек, часто меняющий место жительства всегда испытывал проблемы с тем что при переезде оказывался в ситуации когда имелся новый номер, но не было доступа к старому. Можно ли не привязывать номер мобильного?
3. Многие подобные сервисы требует подтверждения места проживания. Необходимо ли это у вас? Если да, то необходимо ли повторно подтверждать при смене места проживания?
Хорошей практикой считаю использование keepass. Генерирует пароли сразу за звездочками, для копирование не нужно видеть пароль, при вставке тоже одни звездочки. Как итог, я даже никогда не видел большую часть паролей. Пользуюсь года четыре.
Всего в памяти два пароля: база keepass и Gmail (с двухфакторной авторизацией).
Почему именно этот номер я не знаю. Вероятно это регулируется государством (выдача номера, требование к названию сайта и т.д.)