如何获取 promise 和 fire 函数的值

How to grab value of promise and fire function

我知道这是一个常见的问题,但我遇到了一些问题,只有在返回承诺时才尝试触发函数。我也想抢promise返回的值

似乎当我触发 运行 我下面的代码 validPassengerIdhello()console.logs 时,承诺还没有解决。

如何将此代码重写为:

如果 _funnelBasketLuggageService.FindValidPassengerIdForBag return 实际上是一个承诺,您无需创建自己的承诺即可解决此问题 Promise:

 function hello() {
      console.log("hello");
  };

  const promise = _funnelBasketLuggageService.FindValidPassengerIdForBag(PassengerIds, bagsAssignedToPassengers, bag);

  promise.then(validPassengerId => {
      console.log("validPassengerId", validPassengerId);
      hello();
  });

解释 你所做的实际上是将 Promise return 由 FindValidPassengerIdForBag 编辑的 Promise 包装在另一个 Promise 中 return秒。

如果您绝对必须将其包装在自己的 Promise 中,例如因为你需要做一些预处理,所以使用 .then 而不是函数的 return 值:

  function hello() {
      console.log("hello");
  };

  const promise = new Promise((resolve, reject) => {_funnelBasketLuggageService.FindValidPassengerIdForBag(PassengerIds, bagsAssignedToPassengers, bag).then(id=>resolve(id));
  });

  promise.then(validPassengerId => {
      console.log("validPassengerId", validPassengerId);
      hello();
  });

假设 FindValidPassengerIdForBag returns 一个承诺,您不需要将其包装在另一个承诺中。你会像这样使用它:

_funnelBasketLuggageService
  .FindValidPassengerIdForBag(PassengerIds, bagsAssignedToPassengers, bag)
  .then(validPassengerId => {
    console.log("validPassengerId", validPassengerId);
    hello();
  });

如果此代码的 validPassengerId 为 null,那么这一定是 FindValidPassengerIdForBag 解决其承诺的目标。如果您没有预料到,请检查 FindValidPassengerIdForBag 的代码或检查您是否传递了有效参数。