如何使用链式调用 Promise?
How to use chain calls Promise?
现在在 .then
部分我所有另一个承诺 http 请求:
.then(result => { this.service().then(data => {}); });
这是使用链式承诺的正确方法吗?
差不多!您需要 return 函数中的承诺,或者像这样:
.then(result => { return this.service().then(data => {}); });
或者像这样:
.then(result => this.service().then(data => {}));
是的,你的两个承诺是按顺序解决的。但请记住,您的第二个(内部)承诺只会在第一个承诺成功解决后才会被调用。
一个更简洁的解决方案是:
.then(result => this.service()).then(data => {});
正如 Hrishi 在 this SO answer 中阐述的那样,在 then()
函数中返回一个 "thenable"(例如 Promise),使旧承诺采用新承诺的状态。
由于您使用的是 Typescript,因此您可以使用 async/await
以更易读的方式链接承诺:
function firstCall(): Promise<any> { /* return a promise */ }
function service(): Promise<any>{ /* return a promise */ }
async function runPromisses() {
var result = await firstCall();
var data = await service();
// ...
}
现在在 .then
部分我所有另一个承诺 http 请求:
.then(result => { this.service().then(data => {}); });
这是使用链式承诺的正确方法吗?
差不多!您需要 return 函数中的承诺,或者像这样:
.then(result => { return this.service().then(data => {}); });
或者像这样:
.then(result => this.service().then(data => {}));
是的,你的两个承诺是按顺序解决的。但请记住,您的第二个(内部)承诺只会在第一个承诺成功解决后才会被调用。
一个更简洁的解决方案是:
.then(result => this.service()).then(data => {});
正如 Hrishi 在 this SO answer 中阐述的那样,在 then()
函数中返回一个 "thenable"(例如 Promise),使旧承诺采用新承诺的状态。
由于您使用的是 Typescript,因此您可以使用 async/await
以更易读的方式链接承诺:
function firstCall(): Promise<any> { /* return a promise */ }
function service(): Promise<any>{ /* return a promise */ }
async function runPromisses() {
var result = await firstCall();
var data = await service();
// ...
}