如何获取 promise 和 fire 函数的值
How to grab value of promise and fire function
我知道这是一个常见的问题,但我遇到了一些问题,只有在返回承诺时才尝试触发函数。我也想抢promise返回的值
- 所以我想访问一个 angular 服务,它似乎进行了一个 API 调用。
- 等待承诺解决。
- 然后将返回的承诺存储为一个值。
- 然后触发函数
hello()
似乎当我触发 运行 我下面的代码 validPassengerId
和 hello()
console.logs 时,承诺还没有解决。
如何将此代码重写为:
等待 promise 解决。
然后获取 resolved promise 的值 - validPassengerId。 (然后console.log它)。
然后触发函数 hello()
?
function hello() {
console.log("hello");
};
const promise = new Promise((resolve, reject) => {
let validPassengerId = _funnelBasketLuggageService.FindValidPassengerIdForBag(PassengerIds, bagsAssignedToPassengers, bag);
resolve(validPassengerId);
});
promise.then(validPassengerId => {
console.log("validPassengerId", validPassengerId);
hello();
});
如果 _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
的代码或检查您是否传递了有效参数。
我知道这是一个常见的问题,但我遇到了一些问题,只有在返回承诺时才尝试触发函数。我也想抢promise返回的值
- 所以我想访问一个 angular 服务,它似乎进行了一个 API 调用。
- 等待承诺解决。
- 然后将返回的承诺存储为一个值。
- 然后触发函数
hello()
似乎当我触发 运行 我下面的代码 validPassengerId
和 hello()
console.logs 时,承诺还没有解决。
如何将此代码重写为:
等待 promise 解决。
然后获取 resolved promise 的值 - validPassengerId。 (然后console.log它)。
然后触发函数
hello()
?function hello() { console.log("hello"); }; const promise = new Promise((resolve, reject) => { let validPassengerId = _funnelBasketLuggageService.FindValidPassengerIdForBag(PassengerIds, bagsAssignedToPassengers, bag); resolve(validPassengerId); }); promise.then(validPassengerId => { console.log("validPassengerId", validPassengerId); hello(); });
如果 _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
的代码或检查您是否传递了有效参数。