如何在循环中发送http获取方法Typescript。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在循环中发送http获取方法Typescript。相关的知识,希望对你有一定的参考价值。

我想用循环的方式按Id获取10个问题。但是我得到了错误。(TS) Type 'Subscription' is missing the following properties from type 'Question': QuestionId, Content, TestId, Test

我的问题类

import { Test } from './test';

export class Question {
    QuestionId: number;
    Content: string;
    TestId: number;
    Test: Test;
}

我在data.service中的get方法

    getQuestionById(id: number) {
        return this.http.get(this.questionUrl + `/${id}`);
    }

我的组件

    questions: Question[];
    question: Question;

    getQuestions() {
        for (let i = 1; i < 11; i++) {
            this.questions[i] =
                this.dataService.getQuestionById(i)
                    .subscribe((data1: Question) => {
                        this.question = data1;
                    });
            //this.questions.push(this.dataService.getQuestionById(1)
            //    .subscribe((data1: Question) => {
            //        this.question = data1;
            //    }););
        }
    }

我应该如何改变我的 getQuestions() 方法使其工作?

答案

你需要初始化 this.questions 之前 for 语句。

this.questions = []

我相信你的for语句也需要调整。

for (let i = 0; i < 11; i++) {
    this.dataService.getQuestionById(i)
        .subscribe((data1: Question) => {
            this.questions.push(data1)
        });
}

看来,你不需要 this.question 实例。

Angular使用的是RxJs(它有异步调用的订阅机制)。你需要在 .subscribe 功能

以上是关于如何在循环中发送http获取方法Typescript。的主要内容,如果未能解决你的问题,请参考以下文章

typeScrip泛型

如何在 node.js 中使用 axios 循环许多 http 请求

如何使用 Ajax 在循环中单独发送记录

php如何通过get方法发送http请求,并且得到返回的参数

如何在烧瓶中获取http标头?

如何使用ASP.Net发送HTTP请求并且获取返回的XML