具有Angular 2 / Typescript中的Observable的多步函数

时间:2016-05-19 16:06:42

标签: javascript angularjs typescript angular

我试图在Angular 2文档中遵循一个简单的模式,但是执行函数时遇到了困难。

我正在使用的示例是here(app / toh / hero.service.ts(基于可观察的)文件):

extractData

我需要在extraData函数之后存储一个令牌,但不要认为我正在调用它。当我把它放在 private extractData(res: Response) { let body = res.json(); if (body.response.user) { return this.storeToken; } } // want to call this function, but i'm doing something wrong private storeToken(res: Response ) { let resp = res; console.log("resp", resp); this.userId = resp.user.id; this.token = resp.user.authentication_token; localStorage.setItem('userId', this.userId); localStorage.setItem('token', this.token); return Rx.Observable.of('token', 'userId'); } private handleError (error: any) { // In a real world app, we might use a remote logging infrastructure // We'd also dig deeper into the error to get a better message let errMsg = (error.message) ? error.message : error.status ? `${error.status} - ${error.statusText}` : 'Server error'; console.error(errMsg); // log to console instead return Rx.Observable.throw(errMsg); } 函数中时,我得到它的工作,但我希望它可以自己工作:

return this.storeToken

我不确定是否有任何数据传递到(res: Response)函数,我不知道如何在storeToken运算符private extractData(res: Response) { let body = res.json(); if (body.response.user) { this.userId = body.response.user.id; this.token = body.response.user.authentication_token; console.log("id:", this.userId); console.log("token:", this.token); localStorage.setItem('userId', this.userId); localStorage.setItem('token', this.token); return Rx.Observable.of('token', 'userId'); } } 中调用它。

我觉得这是非常基本的,但我已经挂了它,所以任何帮助都非常感谢!谢谢!

修改 这个功能有效,但我想分成两部分:

XIEventMask masks[1];
unsigned char mask[(XI_LASTEVENT + 7)/8];

memset(mask, 0, sizeof(mask));
XISetMask(mask, XI_RawMotion);
XISetMask(mask, XI_RawButtonPress);
XISetMask(mask, XI_RawKeyPress);

masks[0].deviceid = XIAllMasterDevices;
masks[0].mask_len = sizeof(mask);
masks[0].mask = mask;

XISelectEvents(display, DefaultRootWindow(display), masks, 1);
XFlush(display);

编辑2: 阅读订阅和观察。

1 个答案:

答案 0 :(得分:0)

您似乎需要返回@media screen and (max-width: 600px) { #div1 { display: none; } } 方法的调用而不是其签名?

而不是

.extractData

试试这个

private extractData(res: Response) {
    let body = res.json();
    if (body.response.user) {
      return this.storeToken;
    }
  }