Я читал что первый параметр resolve если успешно второй если не успешно rejected. Тут просто используется вроде объекты первого класса тема? Глянем на этот код:
function (r) { setTimeout((function () { r() } )
Я попробовал простой пример который не относится вообще к асинхронным функциям, вот ниже написал, просто этот подход используется в том коде.
((n)=>n)(console.log(5))
Здесь делается похожее. n изначально было просто параметром, а потом превратилось в функцию с именем n.
Перепишем обычным кодом:
(function (n) {return n})(console.log(5))
Вызывается сразу функция n которую я даже не объявлял, я объявил просто параметр n в анонимной функции.
Как кстати переписать эти 2 строчки чтобы вызвать отдельно а не сразу после объявления?
Понял, вот так можно через ссылку.
let d = (function (n) {return n})
console.log(d(5))
или так:
let d = (n=>n)
console.log(d(5))