Т.к. я не 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)
Почему именно этот номер я не знаю. Вероятно это регулируется государством (выдача номера, требование к названию сайта и т.д.)
Соглашусь что выглядит она ужасно. Я не специалист в UI, но билеты на этом портале покупаю регулярно. Так вот я ни разу не задерживался на данной капче больше 5-10 секунд. По личному восприятию прочесть и сделать два-три клика гораздо быстрее разглядывания набора символов, не предназначенных для чтения, с последующим их набором.
Добавлю что, из-за блокировки Гулга знаменитая reCAPTCHA либо не работает, либо имеет долгий отклик при использовании обходных каналов.
С другой стороны, капча введена не для удобства пользователей и я согласен на ввод такой капчи чтобы купить билет по его цене в интернете, нежели покупать с наценкой у перекупщиков (а цена для иностранца всегда отличается).
Жил в Пекине несколько лет и ежедневно ездил на работу на велосипеде, скутере, мотоцикле. Так вот как правило зеркалами китайцы не пользуются. Тут вообще нет понятия пропустить. Очень загруженный поток и как следствие сокращенная дистанция, сложность слежения за происходящим сзади. Поэтому тут совершают маневр когда возможно, а не когда разрешено. «Успеваешь — едь, не успеваешь — тормози». Например, выезжая с боковой дороги на главную в поток, водитель сбоку выезжает тогда когда успеет занять полосу. Водитель на главной, перед которым выехали попадает под правило «не успеваешь» и начинает тормозить или перестраиваться по тем же правилам. Тут если подрезать, то тебе посигналят и всё, разборок на дорогах нет. Как итог смотреть назад и по зеркалам как минимум опрометчиво, сзади идущий тут должен смотреть перед собой.
Отправляем сотни посылок из Китая ежедневно и хорошо почувствовали изменение. Возвращаются аккумуляторы, девайсы с аккумуляторами, девайсы с батарейками, порой просто электроника и всё с пометкой «небезопасный товар». Однако все эти ограничения введены для доставки самолетом, при наземной доставке вся электроника с аккумами проходит. Благо у Китая есть сухопутная граница с Россией. С остальными странами сложнее (читай дороже), но выходы тоже найдены.
Только вот в китайской версии прошивки на магазин это не повлияло. При выборе любого региона с ожиданием и перезагрузкой магазин был по прежнему местный и никакими путями не давал скачать приложения запрещенные в Китае.
Через 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 (с двухфакторной авторизацией).
Почему именно этот номер я не знаю. Вероятно это регулируется государством (выдача номера, требование к названию сайта и т.д.)
Добавлю что, из-за блокировки Гулга знаменитая reCAPTCHA либо не работает, либо имеет долгий отклик при использовании обходных каналов.
С другой стороны, капча введена не для удобства пользователей и я согласен на ввод такой капчи чтобы купить билет по его цене в интернете, нежели покупать с наценкой у перекупщиков (а цена для иностранца всегда отличается).