¿Por qué mi promesa se ejecuta inmediatamente?

Quiero aprender más a fondo cómo funcionan las promesas en JavaScript y probar el siguiente código:

function delay(timeout) { return new Promise(function(resolve, reject){ setTimeout(resolve,timeout); }); } var promise = delay(10000); promise.then(alert('after delay')); 

Quería escribir una envoltura para la función setTimeout () de JS y supongo que aparecerá una alerta después de 10 segundos mientras se ejecuta este código, pero se muestra de inmediato, ¿podría alguien explicar qué está mal aquí?

3 Solutions collect form web for “¿Por qué mi promesa se ejecuta inmediatamente?”

 promise.then(alert('after delay')); 

Tu aquí:

  1. alert() llamada alert()
  2. Pase su valor de retorno a then()

Así que la promesa no se resuelve de inmediato. Sólo alert antes de que se resuelva.

Tienes que pasar una función para then .

 promise.then(alert.bind(window, 'after delay')); 

Agregue la function a su statement de then :

 promise.then(function(){ alert('after delay') }); 

La razón está explicada por la respuesta de Quentin . Una solución adicional sería utilizar las funciones de flecha:

 promise.then(() => alert('after delay')); 
Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.