обещание с одним аргументом функции в then () - PullRequest
0 голосов
/ 13 ноября 2018
     let promise = new Promise(resolve => {
   setTimeout(() => resolve("done!"), 1000);
    });
  promise.then(alert); // shows "done!" after 1 second

// в приведенных выше фрагментах, как alert принимает значение «done», так как мы не передаем никаких аргументов внутри alert

Ответы [ 4 ]

0 голосов
/ 13 ноября 2018

typeof alert является функцией, поэтому всякий раз, когда мы отправляем предупреждение в качестве первого параметра, оно назначается для разрешения обратного вызова Promise.

означает, что разрешение («сделано!») Равно предупреждению («сделано!»)

код ниже не будет предупрежден как сделано!

let promise = new Promise(resolve => {
setTimeout(() => resolve("done!"), 1000);

});
promise.then(alert('not')); 
0 голосов
/ 13 ноября 2018

Все, что вы передали в функции разрешения, будет передано обратному вызову внутри «then».

А функция оповещения принимает параметры для отображения в окне оповещения.Итак, вкратце your promise -> resolve-function -> then -> alert('done').

0 голосов
/ 13 ноября 2018

Для обещания есть две вещи, которые могут быть возвращены Accept (успех) Reject (сбой).Обычно мы делаем что-то подобное, чтобы получить ответ на обещание, как вы можете видеть здесь, мы используем 2 временные переменные для оповещения, если успех, то переменная результата будет предупреждена, а если не получится, переменная ошибки будет предупреждена.

let promise = new Promise(function(resolve, reject) {
  setTimeout(() => reject(new Error("Whoops!")), 1000);
});

// reject runs the second function in .then
promise.then(
  result => alert(result), // doesn't run
  error => alert(error) // shows "Error: Whoops!" after 1 second
);

Если вы заинтересованы только в успешном завершении, тогда вы можете использовать это.

let promise = new Promise(resolve => {
  setTimeout(() => resolve("done!"), 1000);
});

promise.then(alert); // shows "done!" after 1 second

Что он делает? На самом деле результат будет получен как «выполнено», и как вы уже применили предупреждение, «выполнено» будет передано в предупреждениекак это alert("done").

Чтобы поймать напрямую, вы можете использовать это:

let promise = new Promise((resolve,reject) => {
  setTimeout(() => reject("failed!"), 1000);
});

promise.catch(alert); // shows "failed!" after 1 second
0 голосов
/ 13 ноября 2018

, поскольку promise.then принимает function with argument "done" в качестве аргумента, а alert - function, оно автоматически передает "done" в alert

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...