【问题标题】:How to pass a parameter to a subscribe function used to get the content of an assets file in typescript/ionic 3?如何将参数传递给用于获取 typescript/ionic 3 中资产文件内容的订阅函数?
【发布时间】:2018-07-02 12:42:24
【问题描述】:

我知道我可以在 typescript 中获取我的资产目录中的文本文件的内容,例如

this.http.get('assets/data/file_1.txt')
.subscribe(data=>{
   let obj = data['_body'];
   console.log("obj "+JSON.stringify(obj)); // This log the content of the file
});

是否可以向该请求传递参数/值?

我的意思是,在我的情况下,我有几个文件(file_4.txt、file_5.txt、file_1.txt),我想对其中的任何一个重复请求(数字和索引可能随时间变化)。所以我的代码听起来像

var fileIndex=[4,5,1]; 
for (i = 0; i < this.fileIndex.length; i++) { 
  this.http.get('assets/data/file_'+this.fileIndex[i]+'.txt')
  .subscribe(data=>{
        let obj = data['_body'];
        console.log("obj "+JSON.stringify(obj));
        console.log("This is file number "+this.fileIndex[i]); // problem is here
      });
}

我无法记录以这种方式生成的三个请求中的任何一个的文件号。

在订阅中记录 this.fileIndex[i] 返回“未定义”,我可以想象为什么。 get 请求是异步的,不能访问 i 的值。也许也是 fileIndex,不是吗?

那么,我可以将参数/值传递给请求,以便可以在订阅中获取它吗?或者,无论如何,我怎样才能访问 subscribe 函数中的 this.fileIndex[i] 值?

【问题讨论】:

    标签: typescript ionic-framework ionic3


    【解决方案1】:

    一种解决方案,考虑到在 data['url'] 中有请求的完整 url,是

    var fileIndex=[4,5,1]; 
    for (i = 0; i < this.fileIndex.length; i++) { 
      this.http.get('assets/data/file_'+this.fileIndex[i]+'.txt,' {
            params: { fileNumber: this.fileIndex[i] }
        }).subscribe(data=>{
            let obj = data['_body'];
            console.log("obj "+JSON.stringify(obj));
            console.log("This is file number "+
    this.getQueryString("fileNumber",data['url']));
          });
    }
    
    getQueryString = function ( field, url ) {
        var href = url ? url : window.location.href;
        var reg = new RegExp( '[?&]' + field + '=([^&#]*)', 'i' );
        var string = reg.exec(href);
        return string ? string[1] : null;
      };
    

    但似乎不太优雅。

    【讨论】:

      猜你喜欢
      • 2017-11-19
      • 1970-01-01
      • 2019-09-10
      • 2013-12-11
      • 2016-02-01
      • 2020-08-12
      • 2021-12-04
      • 2016-05-23
      • 1970-01-01
      相关资源
      最近更新 更多