Este código funciona:
Promise.all([Promise.resolve(1)])Sin embargo, este código no:
const f = Promise.all f([Promise.resolve(1)]) El segundo fragmento de código arroja el siguiente error: Uncaught TypeError: Promise.all called on non-object .
¿Por qué no puedo asignar la función Promise.all a una variable y usarla normalmente?
Porque eso es lo que requiere la especificación .
1. Let C be the this value. 2. Let promiseCapability be ? NewPromiseCapability(C). 3. Let promiseResolve be Completion(GetPromiseResolve(C)). ...La función all requiere que este valor sea una función constructora que admita las convenciones de parámetros del constructor Promise.
Su código actual no está llamando a la función como parte de un objeto (es decir, f es un identificador independiente), por lo que this resultado es el objeto global o undefined , dependiendo de si está en modo estricto o no, de cualquier manera , no se cumple el requisito anterior.
Si vincula la función a Promise, funcionará.
const f = Promise.all.bind(Promise);