Size: a a a

2020 December 03

AP

Alexander Ponomarev in Svelte [svelt]
function* test(fl, time = 1e3) {
 yield 0
 return fl ? yield* sleep(time, 'reg') : yield 2
}

Это тоже какая фигня заменяется на
function* test(fl, time = 1e3) {
 yield 0
 return fl ? sleep(time, 'reg') : 2
}
источник

BB

Bohdan Bessonov in Svelte [svelt]
Марк Танащук
Правильно составленные тесты как раз и помогают
Безусловно ) «правильные» только сложно...)
источник

L

Lupusregina[beta] in Svelte [svelt]
Alexander Ponomarev
function* test(fl, time = 1e3) {
 yield 0
 return fl ? yield* sleep(time, 'reg') : yield 2
}

Это тоже какая фигня заменяется на
function* test(fl, time = 1e3) {
 yield 0
 return fl ? sleep(time, 'reg') : 2
}
я тебе пишу это нужно, что тест хаком не решали
источник

AP

Alexander Ponomarev in Svelte [svelt]
Lupusregina[beta]
вот смотри
я похож на любителя скриншотов с кодом которые не совпадают с исходной задачей?
источник

L

Lupusregina[beta] in Svelte [svelt]
потому что yield* не пробрасывает на верх , если это последняя итерация
источник

AP

Alexander Ponomarev in Svelte [svelt]
Lupusregina[beta]
я тебе пишу это нужно, что тест хаком не решали
каким еще хаком? =) это юзлес код
источник

L

Lupusregina[beta] in Svelte [svelt]
Lupusregina[beta]
Переслано от Lupusregina[beta]
function* sleep(ms, val) {
 return yield new Promise(r => setTimeout(() => r(val), ms))
}
function* test(fl, time = 1e3) {
 yield 0
 return fl ? yield* sleep(time, 'reg') : yield 2
}
function* each() {
 let sum = 0
 for(let i = 0; i < 1e6; i++)
   sum += yield* test()
 return yield sum
}
function* test2() {
 Promise.resolve().then(() => console.log('after'))  
 console.log('sum:', yield* each())
 
 Promise.resolve().then(() => console.log('before sleep'))
 for(let i = 10; i--; )
   console.log(`r${i}=`, yield* test(1, 100))
 
 console.log('sum:', yield* each())
}
asyncWrapper(test2)
исходная задача вот! ее решайте
источник

AP

Alexander Ponomarev in Svelte [svelt]
я из нее куски кода тебе и пишу
источник

L

Lupusregina[beta] in Svelte [svelt]
Alexander Ponomarev
каким еще хаком? =) это юзлес код
в другом чате, парень решил. Но там был простой тест
источник

AP

Alexander Ponomarev in Svelte [svelt]
ладно мне не интересно я не вижу в этом прикладной пользы, если ты ее покажешь то я на 99% уверен что задачу которую ты покажешь можно решить 2мя строчками кода без генераторов
источник

L

Lupusregina[beta] in Svelte [svelt]
Alexander Ponomarev
ладно мне не интересно я не вижу в этом прикладной пользы, если ты ее покажешь то я на 99% уверен что задачу которую ты покажешь можно решить 2мя строчками кода без генераторов
источник

MV

Moonpax Vadim in Svelte [svelt]
источник

IS

Ivan Shport in Svelte [svelt]
Lupusregina[beta]
в 40 раз быстрее
Вообще можно даже без промисов написать, будет ещё быстрее))
источник

L

Lupusregina[beta] in Svelte [svelt]
Ivan Shport
Вообще можно даже без промисов написать, будет ещё быстрее))
синхронный код в 12 раз быстрее моего вариант с генератарми
источник

L

Lupusregina[beta] in Svelte [svelt]
(правда я в цикле тестил, там уже прогрето все. Так хз, может не такая большая разница будет)
источник

IS

Ivan Shport in Svelte [svelt]
Lupusregina[beta]
синхронный код в 12 раз быстрее моего вариант с генератарми
Ты имеешь в виду тот же вариант только без setTimeout?
источник

AP

Alexander Ponomarev in Svelte [svelt]
где синхронный код, где вариант на асинках, что с чем сравнивалось ваааще хз. Как может быть написан синхронный код для асинхронной задачи это вообще неизвестно никому =)
источник

L

Lupusregina[beta] in Svelte [svelt]
function* sum(a, b) {
 return a + b
}
function* test2() {
 console.time('sum')
 let summary = 0
 for(let i = 0; i < 1e6; i++) {
   summary += yield* sum(i, i)
 }
 console.timeEnd('sum')
 console.log({summary})
}
asyncWrapper(test2)

function sumSync(a, b) { return a + b }
function test2Sync() {
 console.time('sumSync')
 let summary = 0
 for(let i = 0; i < 1e6; i++) {
   summary += sumSync(i, i)
 }
 console.timeEnd('sumSync')
 console.log({summary})
}
test2Sync()

async function sumAsync(a, b) { return a + b }
async function test2Async() {
 console.time('test2Async')
 let summary = 0
 for(let i = 0; i < 1e6; i++) {
   summary += await sumAsync(i, i)
 }
 console.timeEnd('test2Async')
 console.log({summary})
}
test2Async()
источник

L

Lupusregina[beta] in Svelte [svelt]
вот 3 разных теста
источник

L

Lupusregina[beta] in Svelte [svelt]
источник