Angular 5+ 等待返回 Promise 的服务
创始人
2024-10-15 21:30:57
0

在Angular 5+中,可以使用async/await语法来等待返回Promise的服务。下面是一个示例代码:

首先,在服务中创建一个返回Promise的方法。例如,假设我们有一个UserService,其中有一个方法getUserById,它返回一个Promise:

import { Injectable } from '@angular/core';

@Injectable()
export class UserService {
  getUserById(id: number): Promise {
    return new Promise((resolve, reject) => {
      // 假设这里是从服务器获取用户信息的异步操作
      setTimeout(() => {
        const user = { id, name: 'John' };
        resolve(user);
      }, 2000);
    });
  }
}

接下来,在组件中使用该服务,并使用async/await语法等待返回的Promise:

import { Component, OnInit } from '@angular/core';
import { UserService } from './user.service';

@Component({
  selector: 'app-user',
  template: `
    

User Details

{{ user?.id }}

{{ user?.name }}

`, }) export class UserComponent implements OnInit { user: any; constructor(private userService: UserService) {} async ngOnInit() { this.user = await this.userService.getUserById(1); console.log(this.user); } }

在上述代码中,我们在ngOnInit方法中使用async/await语法来等待getUserById方法的返回值。当Promise被解决时,await会暂停代码的执行,直到Promise被解决并返回结果。

请注意,使用async/await语法需要在方法前面添加async关键字,并且只能在异步上下文中使用。在上面的代码中,我们将ngOnInit方法标记为async,以便使用await关键字。

这样,当组件初始化时,它会等待getUserById方法返回的Promise被解决,然后将结果赋值给user变量。在上述示例中,我们将user对象显示在模板中。

希望能帮到你!

相关内容

热门资讯

透视解迷!uupoker有透视... 透视解迷!uupoker有透视吗(透视)德普之星透视,教程妙招(有挂教学)-哔哩哔哩1、透视解迷!u...
透视开挂!wepokerplu... 透视开挂!wepokerplus透视脚本免费(透视)德普辅助软件,教程手册(真实有挂)-哔哩哔哩1、...
透视解谜!德普之星辅助器app... 透视解谜!德普之星辅助器app(透视)拱趴大菠萝开挂方法,教程技法(证实有挂)-哔哩哔哩1)拱趴大菠...
透视解迷!pokerrrr2辅... 透视解迷!pokerrrr2辅助(透视)哈糖大菠萝攻略,教程方案(有挂秘诀)-哔哩哔哩1、哈糖大菠萝...
透视解谜!WePoKer辅助器... 透视解谜!WePoKer辅助器(透视)wepoker私人局俱乐部辅助,教程积累(有挂规律)-哔哩哔哩...
透视开挂!sohoo竞技联盟辅... 透视开挂!sohoo竞技联盟辅助器(透视)德州局透视脚本免费版下载手机版,教程妙计(有挂神器)-哔哩...
透视揭幕!aapoker能控制... 透视揭幕!aapoker能控制牌吗(透视)epoker底牌透视,教程资料(确实有挂)-哔哩哔哩1、玩...
透视分享!wepoker有辅助... 您好,wepoker有辅助器吗这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054...
透视推荐!wepoker软件辅... 透视推荐!wepoker软件辅助程序(透视)wepoker软件辅助程序,教程烘培(有挂解密)-哔哩哔...
透视科普!hhpoker是正规... 透视科普!hhpoker是正规的吗(透视)hhpoker辅助器视频,教程窍要(详细教程)-哔哩哔哩1...