123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- function makeProfileTimer() {
- let time1 = performance.now()
- let timeInner = () => {
- let time2 = performance.now()
- return time2 - time1
- }
- return timeInner;
- }
- // var timer = makeProfileTimer()
- // alert('Замеряем время работы этого alert'); //некий код, время выполнения которого мы хотим измерить с высокой точностью
- // alert(timer()); //alert должен вывести время в микросекундах от выполнения makeProfileTimer до момента вызова timer(),
- // // т. е. измерить время выполнения alert
- function makeSaver(funk) {
- let savedResult
- let saverInner = () => {
- if (savedResult == undefined) {
- savedResult = funk()
-
- }
- return savedResult
- }
-
- return saverInner
- }
- var saver = makeSaver(Math.random) //создает функцию-хранилище результата переданной в качестве параметра функции (Math.random
- // в примере). На этом этапе Math.random НЕ вызывается
- var value1 = saver() //saver вызывает переданную в makeSaver функцию, запоминает результат и возвращает его
- var value2 = saver() //saver в дальнейшем просто хранит результат функции, и более НЕ вызывает переданную
- //в makeSaver функцию;
- value1 === value2 // всегда true
- var saver2 = makeSaver(() => console.log('saved function called') || [null, undefined, false, '', 0, Math.random()][Math.ceil(Math.random()*6)])
- var value3 = saver2()
- var value4 = saver2()
- value3 === value4 // тоже должно быть true
- function starter (number) {
- console.log(number)
- number = number - 1
- starterInner()
- function starterInner() {
- setTimeout(() => {
- if(number > 0){
- console.log(number)
- number = number-1
- return starterInner(number)
- } else {
- return console.log("done")
- }
- }, 1000)
- }
- }
- // starter(5)
|