Назначение обещания переменной, а не результата или выполненного обещания? - PullRequest
1 голос
/ 29 апреля 2019

Допустим, у нас есть обещание:

const aPromise = new Promise(()=>{console.log('promise executed');}) 

Просто присваиваем это обещание, выполняем его, и это отображается на консоли:

promise executed

И когда я вызываю aPromise, ононе входит в консоль, и результат console.log (aPromise) показывает, что он разрешен.

Мой вопрос заключается в том, как назначить Promise без его выполнения / разрешения, чтобы я мог вызватьэто несколько раз?

Ответы [ 3 ]

3 голосов
/ 29 апреля 2019

Вы можете обернуть его в функцию, подобную этой:

const getPromise = () => new Promise((resolve,reject) => {
    console.log('Promise executed')
    resolve()
})

Теперь вы можете вызывать ее несколько раз:

getPromise().then(() => { // do something })
1 голос
/ 29 апреля 2019

Вы можете просто вернуть обещание из функции и присвоить его переменной

function returnpromise(val) {
  return new Promise((resolve, reject) => {
    if (val > 5) {
      resolve("resolved hello"); // fulfilled
    }
    else {
      reject("rejected"); // rejected
    }
  });
}

let prom=returnpromise(6);// assign promise to variable prom
console.log(prom) // returns Promise { 'resolved' }

// to get the data use it many times

prom.then(a=>console.log(a));
0 голосов
/ 29 апреля 2019

Без входных аргументов в Promise ():

function Promise() {
  console.log('promise executed');
}

const aPromise = new Promise();

С входными аргументами в Promise (аргументы)

function Promise(a) {
  console.log(a);
}

const aPromise = new Promise("promise executed");

Примечание: в Javascript не используется оператор"=>", оператор "=>" используется в C / C ++, дополнительную информацию см. здесь:

https://www.w3schools.com/jsref/jsref_operators.asp

...