В приведенном ниже примере generator
функция используется для создания уникального идентификатора.
Фрагмент кода происходит из следующего сообщения среды: function * UUIDGenerator () { let d , r ; while ( true ) { yield 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' . replace ( / [xy] / g , function ( c ) { r = ( new Date (). getTime () + Math . random () * 16 ) % 16 | 0 ; d = Math . этаж ( d / 16 ); return ( c == 'x' ? r : ( r & 0x3 | 0x8 )). toString ( 16 ); }); } }; let myGen = UUIDGenerator (); консоль . log ( myGen . next ()); -yield-next-async-await-e428b0cb52e4 "rel =" nofollow noreferrer "> Источник
generator
ВОПРОС 1
Какой смысл использовать generator
в этом фрагменте? Коду не нужно запоминать какое-либо состояние между каждым вызовом. Поэтому не может ли мы использовать обычный объект функции?
ВОПРОС 2
Iterables
(например generators
) нужны только тогда, когда нам нужно iterator object
, чтобы перебирать последовательность, запоминая состояние между каждым вызовом? Если нам не нужно помнить о состоянии, iterable
нет необходимости в праве?
ВОПРОС 3
Боковой вопрос: ESLint
жалуется при использовании функций внутри циклов. generators
Как видно, такая картина очень типична . Как это чаще всего решается?
function UUIDGenerator() {
let d, r;
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
let r = (new Date().getTime() + Math.random() * 16) % 16 | 0;
let d = Math.floor(d / 16);
return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
});
};
console.log(UUIDGenerator());
javascript,ecmascript-6,eslint,iterable,
В приведенном ниже примере generator
функция используется для создания уникального идентификатора.
Фрагмент кода происходит из следующего сообщения среды: function * UUIDGenerator () { let d , r ; while ( true ) { yield 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' . replace ( / [xy] / g , function ( c ) { r = ( new Date (). getTime () + Math . random () * 16 ) % 16 | 0 ; d = Math . floor ( d / 16 ); return ( c == 'x' ? r : ( r & 0x3 | 0x8 )). toString ( 16 ); }); } }; let myGen = UUIDGenerator (); консоль . log ( myGen . next ()); -yield-next-async-await-e428b0cb52e4 "rel =" nofollow noreferrer "> Источник
generator
ВОПРОС 1
Какой смысл использовать generator
в этом фрагменте? Коду не нужно запоминать какое-либо состояние между каждым вызовом. Поэтому не может ли мы использовать обычный объект функции?
ВОПРОС 2
Iterables
(например generators
) нужны только тогда, когда нам нужно iterator object
, чтобы перебирать последовательность, запоминая состояние между каждым вызовом? Если нам не нужно помнить о состоянии, iterable
нет необходимости в праве?
ВОПРОС 3
Боковой вопрос: ESLint
жалуется при использовании функций внутри циклов. generators
Как видно, такая картина очень типична . Как это чаще всего решается?
function UUIDGenerator() {
let d, r;
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
let r = (new Date().getTime() + Math.random() * 16) % 16 | 0;
let d = Math.floor(d / 16);
return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
});
};
console.log(UUIDGenerator());