IONIC4 angular 发送同步HTTP

不管是 IONIC的,或者是angular的 都为异步HTTP,这样会导致一个问题,我下个接口的参数,会依赖于上个接口的返回值,如果为异步请求的话,只能在 .subscribe 或者 .then 里面获取返回值,然后再调用下一个接口,这样不仅响应代码的可阅读性,并且会导致多个嵌套,引发一系列问题。
下面介绍同步使用HTTP 方法

  1. 封装一个http 类,例如get方法
    public getAsync(url: any): Promise<any> {
        return new Promise((resolve, reject) => {
            this.http.get(url).subscribe((data) => {
                resolve(data);
            }, (err: HttpErrorResponse) => {
                resolve({
                    err: err.status,
                    message: "網絡錯誤"
                });
            });
        })
    }

2.利用 async/await 实现 HTTP 同步
在方法上面添加 async,在需要同步的代码前增加 await

例子:

    public async login() {
        console.log("1");
        let val = await this.identifyApi.login("data=" + encodeURI("xxx"), this.config);
        console.log("2");
        let res = await this.identifyApi.getUserByPk(val, this.config);
        console.log("3");
        console.log("后续操作");
    }

代码会按照顺序执行,如果不使用 该同步方法,则代码执行顺序为:


    public login() {

        console.log("1");
        this.identifyApi.login("data=" + encodeURI("xxx"), this.config).then(res => {
            console.log("2");
            this.identifyApi.getUserByPk(res.xxx, this.config).then(data => {
                console.log("3");
                console.log("返回值");
                console.log("后续操作");
            });
        });
        
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • async 函数 含义 ES2017 标准引入了 async 函数,使得异步操作变得更加方便。 async 函数是...
    huilegezai阅读 1,285评论 0 6
  • 原文连接:https://blog.csdn.net/sinat_17775997/article/details...
    小豆soybean阅读 4,308评论 0 7
  • 含义 async函数是Generator函数的语法糖,它使得异步操作变得更加方便。 写成async函数,就是下面这...
    oWSQo阅读 2,007评论 0 2
  • 含义 ES2017标准引入了async函数,使得异步操作变得更加方便.async函数其实就是Generator函数...
    JarvanZ阅读 550评论 0 0
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,174评论 1 32