小编Rap*_*aël的帖子

返回一个 Task 而不是等待内部方法调用

我看到一些同事的代码,他选择不等待数据库调用而只返回任务。例如

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 ......

c# asynchronous task async-await

5
推荐指数
1
解决办法
1103
查看次数

Angular6 打字稿扩展方法 Observable&lt;T&gt;

我正在尝试在 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)

extension-methods typescript angular6

2
推荐指数
1
解决办法
703
查看次数