Как привязать параметр к .then обещанию? - PullRequest
0 голосов
/ 05 ноября 2018

Я хотел бы передать некоторые свойства свойств функции в их текущем состоянии, когда я вызываю свое обещание.

Вот пример кода, в котором мы представим, что getPromise возвращает число в результате:

let a = 0;
let b = 0;
getPromise().then((result) => {
    console.log(a + b + result); // i want 'a' and 'b' to be equal to 0 here and not 1
});
a++;
b++;

Я пытался использовать функцию .bind () разными способами, но ничего не получалось.

Конечно, это минимизация более серьезной проблемы, чтобы сосредоточиться на технической проблеме, с которой я сталкиваюсь.

EDIT: У меня нет контроля над значениями a и b. Это может измениться после того, как я установил их.

Ответы [ 2 ]

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

.bind - правильный инструмент для использования здесь.

const wait = (value, delay = 100) =>
  new Promise(resolve => setTimeout(() => resolve(value), delay));

let a = 0;
let b = 0;
wait(50).then(
  ((a, b, result) => {
    console.log(a, b, result);
  }).bind(null, a, b),
);
a++;
b++;

выходы

0 0 50

как и ожидалось, поскольку a и b захвачены .bind().

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

Используйте IIFE для передачи значений a и b:

let a = 0;
let b = 0;

getPromesse().then(((a, b) => (result) => {
  console.log(a + b + result);
})(a, b));

a++;
b++;

// mock getPromesse
function getPromesse() {
  return new Promise(resolve => {
    setTimeout(() => resolve(5), 500);
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...