Promise值可以发送到next()内部的函数,而不是next()内部的回调吗?

时间:2019-09-16 21:24:45

标签: javascript promise es6-promise

问题:能否将Promise值发送到next()内部的函数而不是next()内部的回调?

背景:以下标准Promise模式可以正常工作。将 x等于1 发送到控制台。

function promisesPromises() {
  return new Promise(function(resolve, reject) {
    let x = 1;
    if (x === 1) {
      resolve('x equals 1');
    } else {
      reject('x does not equal 1');
    }
  });
}

promisesPromises()
  .then(function(data) {
    console.log(data);
  });

但是,当我在.then()内调用函数而不是回调函数时,会引发错误。

function promisesPromises() {
  return new Promise(function(resolve, reject) {
    let x = 1;
    if (x === 1) {
      resolve('x equals 1');
    } else {
      reject('x does not equal 1');
    }
  });
}

function linkOne(data) {
  console.log(data);
}

promisesPromises()
  .then(linkOne(data));

  

ReferenceError:数据未定义

我可以通过将函数放在回调函数中来克服这个问题,但这似乎很笨拙。

promisesPromises()
    .then( function(data) {
        linkOne(data);
    });

是否存在另一种可以实现相同目标而不将函数放在回调内部的模式?

1 个答案:

答案 0 :(得分:1)

then接受一个函数,即您执行.then(linkOne(data));并调用linkOne(data)并传入由于未定义数据而引发错误的结果。

另一种方法是使用asnyc/await

const data = await promisesPromises();
linkOne(data);