|
@@ -0,0 +1,53 @@
|
|
|
+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 = funk()
|
|
|
+ let result = () => {
|
|
|
+
|
|
|
+ return savedResult
|
|
|
+ }
|
|
|
+ return result
|
|
|
+}
|
|
|
+// 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) {
|
|
|
+
|
|
|
+ setTimeout(() => {
|
|
|
+ if(number > 0){
|
|
|
+ console.log(number)
|
|
|
+
|
|
|
+ number = number-1
|
|
|
+
|
|
|
+ return starter(number)
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ return console.log("done")
|
|
|
+ }
|
|
|
+ }, 1000)
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ //starter(5)
|