Пример обещания без асинхронного кода? - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь понять механизм обещаний. В частности, что все мы можем передать первому параметру (обычно это называется решением). например:

function getFoo(url){
    return new Promise(function(resolve, reject) {
        let httpRequest = new XMLHttpRequest();
        httpRequest.open('GET', url);
        httpRequest.onload = function(){
            if(httpRequest ===200) {resolve(httpRequest.responseText);
            } else{ reject(Error(httpRequest.status));}
        }
        httpRequest.send();
    });
}

Я пытаюсь создать свою собственную функцию, которая могла бы извлечь выгоду из обещания (все примеры используют либо setTimeout, либо код ajax). Может ли кто-нибудь предоставить простой пример обычной функции, использующей обещание (даже если механизм в этом случае не нужен), чтобы я мог создавать свои собственные функции, которые могут передавать что-то в обратный вызов resol? Спасибо

например:

function getFoo(param){
    return new Promise(function(resolve, reject) {
        ????myFoo () { ...return...}
         resolve(myFoo);

            } else{ reject(???);}
        }
    });
}

1 Ответ

0 голосов
/ 28 февраля 2020

что все, что мы можем передать первому параметру (обычно это называется resolv) в основном, любой тип данных, поддерживаемый javascript.

Ниже приведен простой пример обещания.

PS Примечание. Объект обещания будет вызываться только при вызове функции then, а это функция then который принимает обратный вызов для разрешения и отклоняет.

function callPromise() {

  return new Promise(function(resolve, reject) {
  // do a thing, possibly async, then…

  if (true) {
    resolve("Stuff worked!");
  }
  else {
    reject(Error("It broke"));
  }
});

}

callPromise().then(function(success){
   console.log(success);
}, function(error)
{
  console.log(error);
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...