Ionic rxjs 管道函数在 http post 之后未被调用
Ionic rxjs pipe function not getting called after http post
我正在使用 ionic 5
当我尝试使用 post 连接到 firebase 并获取响应数据并使用 pipe 和 tap 处理响应时,它无法正常工作。日志未打印。
但是当我用 subscribe 替换管道时它工作正常并且我可以正确地看到日志。
请查看下面的工作代码和非工作代码。
有人可以帮我解决这个问题吗?感谢您的帮助。
工作代码
return this.http.post("https://project-name.firebaseio.com/offered-places.json", {
...newPlace,
id: null
}).subscribe(resDate => {
console.log(resDate);
});
代码无效
return this.http.post("https://project-name.firebaseio.com/offered-places.json", {
...newPlace,
id: null
}).pipe(
tap(resData => {
console.log(resData);
})
);
如评论中所述,您必须调用 subscribe 方法
这是重现您的案例并提供上述解决方案的片段。
const exampleObservable1 = rxjs.of([{}]);
const exampleObservable2 = rxjs.of([{}]);
const exampleObservable3 = rxjs.of([{}]);
console.log('working example');
exampleObservable1.subscribe(resDate => {
console.log(resDate);
});
console.log('not working example');
exampleObservable2.pipe(
rxjs.operators.tap(resData => {
console.log(resData);
}))
console.log('suggestion');
exampleObservable3.pipe(
rxjs.operators.tap(resData => {
console.log('tap', resData);
})).subscribe(resDate => {
console.log('subscription', resDate);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.5/rxjs.umd.js"></script>
我正在使用 ionic 5
当我尝试使用 post 连接到 firebase 并获取响应数据并使用 pipe 和 tap 处理响应时,它无法正常工作。日志未打印。
但是当我用 subscribe 替换管道时它工作正常并且我可以正确地看到日志。
请查看下面的工作代码和非工作代码。
有人可以帮我解决这个问题吗?感谢您的帮助。
工作代码
return this.http.post("https://project-name.firebaseio.com/offered-places.json", {
...newPlace,
id: null
}).subscribe(resDate => {
console.log(resDate);
});
代码无效
return this.http.post("https://project-name.firebaseio.com/offered-places.json", {
...newPlace,
id: null
}).pipe(
tap(resData => {
console.log(resData);
})
);
如评论中所述,您必须调用 subscribe 方法
这是重现您的案例并提供上述解决方案的片段。
const exampleObservable1 = rxjs.of([{}]);
const exampleObservable2 = rxjs.of([{}]);
const exampleObservable3 = rxjs.of([{}]);
console.log('working example');
exampleObservable1.subscribe(resDate => {
console.log(resDate);
});
console.log('not working example');
exampleObservable2.pipe(
rxjs.operators.tap(resData => {
console.log(resData);
}))
console.log('suggestion');
exampleObservable3.pipe(
rxjs.operators.tap(resData => {
console.log('tap', resData);
})).subscribe(resDate => {
console.log('subscription', resDate);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.5/rxjs.umd.js"></script>