mirror of
https://github.com/leporello-js/leporello-js
synced 2026-01-13 13:04:30 -08:00
74 lines
2.0 KiB
Plaintext
74 lines
2.0 KiB
Plaintext
|
|
Timeline Replay
|
|||
|
|
|
|||
|
|
call a() call a()
|
|||
|
|
resolve a()
|
|||
|
|
|
|||
|
|
call b()
|
|||
|
|
resolve b()
|
|||
|
|
|
|||
|
|
call c()
|
|||
|
|
resolve c()
|
|||
|
|
|
|||
|
|
|
|||
|
|
Timeline Replay
|
|||
|
|
|
|||
|
|
resolution_index = 0, io_index = 0
|
|||
|
|
|
|||
|
|
call a() call a: return promise
|
|||
|
|
compare resolutions[resolution_index] with io_index
|
|||
|
|
io_index < resolutions[0]
|
|||
|
|
do not resolve
|
|||
|
|
io_index++
|
|||
|
|
|
|||
|
|
call b() call b: return promise
|
|||
|
|
compare resolutions[0] && io_index
|
|||
|
|
io_index < resolutions[0]
|
|||
|
|
do not resolve
|
|||
|
|
|
|||
|
|
call c() call c: return promise
|
|||
|
|
|
|||
|
|
resolve c()
|
|||
|
|
resolve b()
|
|||
|
|
resolve a()
|
|||
|
|
|
|||
|
|
|
|||
|
|
resolutions: [
|
|||
|
|
3,
|
|||
|
|
2,
|
|||
|
|
1,
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
Делаем реплей. К нам приходят события - вызовы функций. Мы перехватываем вызов, возвращаем промис, и ресолвим тот промис, который сейчас надо заресолвить. Например, в примере выше мы ресолвим a() после вызова с(). А b() ресолвим после ресолва с(). То есть мы можем ресолвить несколько за раз.
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Record: [
|
|||
|
|
call a
|
|||
|
|
resolve a
|
|||
|
|
call b
|
|||
|
|
resolve b
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
Replay: [
|
|||
|
|
|
|||
|
|
call a
|
|||
|
|
смотрим что возвращается промис, взводим ресолвер
|
|||
|
|
|
|||
|
|
ресолвер сработал
|
|||
|
|
resolve a
|
|||
|
|
|
|||
|
|
call b
|
|||
|
|
смотрим что возвращается промис, взводим ресолвер
|
|||
|
|
|
|||
|
|
ресолвер сработал
|
|||
|
|
resolve b
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
call
|
|||
|
|
resolve
|