Pull to refresh

Comments 4

https://benlesh.medium.com/hot-vs-cold-observables-f8094ed53339

cold -> не генерируют значения пока никто не подписан

warm -> генерируют значения пока есть хоть один подписчик

hot -> генерируют значения независимо от наличия подписчиков

----------------------------------------------

сделать cold -> warm:

share() + refCount

сделать cold -> hot:

share()

Это больше теоретические термины, я же интерпретировал это в рамках своей практической задачи, да и интерпретаций этих последовательностей куча - в любом случае смысл остается примерно тот же, как ни крути). В моем понимании:

  1. Горячий режим (оптимизированный метод): Я использую этот термин для обозначения режима прослушки, который активируется, когда пользователь активен на вкладке. В целом, "горячий" может пониматься как что-то активное и быстрое, поэтому этот термин может быть справедливым

  2. Холодный режим (константный метод): Я использую этот термин для обозначения режима прослушки, который активируется, когда пользователь покинул вкладку. Термин "холодный" обычно ассоциируется с чем-то неактивным или медленным, как и приведено в константном методе

Ну а примерно так это выглядело бы на $mol_wire:

class App extends $mol_object {
	
	@ $mol_mem
	logs() {
		return [] as string[]
	}
	
	@ $mol_action
	fetch() {
		
		this.$.$mol_wait_timeout( 2000 + ( Math.random() * 1000 ) % 5000 )
		
		const randomValue = Math.floor( ( Math.random() * 5000 ) % 5000 )
		console.log( `[FETCH] Result ${randomValue} and logs: ${ this.logs() }` )
		this.logs().push( randomValue )
		
		return randomValue
	}
	
	@ $mol_action
	fetch_trace() {
		let duration =- $mol_wire_sync( Date ).now()
		try {
			const res = this.fetch()
            cosole.log( `[FETCH TRACE] Done` )
            return res
		} catch( error : unknown ) {
            cosole.log( `[FETCH TRACE] Fail` )
        } finally {
			duration += Date.now()
			console.log( `[FETCH TRACE] Duration ${duration} ms` )
		}
	}
	
	@ $mol_mem
	fresh_value() {
		const frequency = this.$.$mol_tab.active() ? 1000 : 8000
		this.$.$mol_state_time.now( frequency )
		return this.fetch_trace()
	}
	
}

Sign up to leave a comment.

Articles