我看到一些同事的代码,他选择不等待数据库调用而只返回任务。例如
public Task<UpdateResult> AddActivityAsync(ClaimsPrincipal principal, Activity activity)
{
return _userManager.SaveToDatabaseAsync(principal, activity);
}
Run Code Online (Sandbox Code Playgroud)
与_userManager.SaveToDatabaseAsync异步一样,我会以这种方式实现
public async Task<UpdateResult> AddActivityAsync(ClaimsPrincipal principal,
Activity activity)
{
return await _userManager.SaveToDatabaseAsync(principal, activity);
}
Run Code Online (Sandbox Code Playgroud)
这个方法的调用方法总是等待它:
await _profile.AddActivityAsync(..., ...)
Run Code Online (Sandbox Code Playgroud)
不使内部方法异步并只返回任务,让调用者等待它有什么好处吗?我以为我们必须一直写 Async ......
我正在尝试在 Observable 上做一个扩展方法
import { Observable } from 'rxjs/Observable';
declare module 'rxjs/Observable' {
interface Observable<T> {
customFilter<T>(this: Observable<T>): Observable<T>;
}
}
function customFilter<T>(this: Observable<T>) {
return this;
}
Observable.prototype.customFilter = customFilter;
Run Code Online (Sandbox Code Playgroud)
但是我总是收到编译错误
ERROR in src/app/utils/observable.extensions.ts(13,1): error TS2693: 'Observable' only refers to a type, but is being used as a value here.
Run Code Online (Sandbox Code Playgroud)
这是我的 tsconfig.app.json
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"baseUrl": "./",
"module": "es6",
"types": [],
"paths": {
"@angular/*": [
"../node_modules/@angular/*"
]
}
},
"exclude": [
"test.ts",
"**/*.spec.ts"
]
} …Run Code Online (Sandbox Code Playgroud)