Как использовать иерархию обещаний, избегая анти-паттерна? - PullRequest
0 голосов
/ 14 января 2019

Я пытался научиться избегать антипаттерна, как описано здесь Что такое явное обещание построения антипаттерна и как его избежать?

Я начал с некоторого кода на JSFiddle, но он не выдает того, что я ожидал ..

function sum1(x){
    return new Promise(resolve => x+1)
}

function sum2(x){
  return sum1(x)
  .then(x => x+1);
}

function sum3(x){
  return sum2(x)
  .then(x => x+1)
}

sum3(1)
.then(console.log);

Я ожидаю, что он напечатает 4, но ничего не печатает

Ответы [ 2 ]

0 голосов
/ 14 января 2019

вы делаете это неправильно в sum1. new Promise((resolve, reject) => {//code here}) принимает функцию в качестве аргумента

function sum1(x){
    return new Promise((resolve) => {
    	resolve(x + 1);
    })
}

function sum2(x){
  return sum1(x)
  .then(x => x+1);
}

function sum3(x){
  return sum2(x)
  .then(x => x+1)
}

sum3(1)
.then(res => console.log(res));
0 голосов
/ 14 января 2019

Вам необходимо создать разрешенное обещание, используя Promise.resolve():

function sum1(x){
    return Promise.resolve(x+1)
}

function sum2(x){
  return sum1(x)
  .then(x => x+1);
}

function sum3(x){
  return sum2(x)
  .then(x => x+1)
}

sum3(1)
.then(console.log);
...