我可以诚实地说,角度等待/异步真的是一个很棒的东西,它减少了很多大括号,提高了可读性并防止了很多人为错误.然而,有一件事困扰我很多.如何在subscribe中使用await/async.
让我们说吧
@Injectable()
export class TableCom extends BaseCom {
public subject = new Subject<any>();
}
Run Code Online (Sandbox Code Playgroud)
TableCom是一个提供者,用作信号器组件和页面组件之间的通信器.
所以在页面组件构造函数中,它使用可观察主题从signalr组件接收新数据,如下所示.
constructor(protected nav: NavController,
protected db: Storage,
protected alert: AlertController,
protected order: OrderData,
protected translate: TranslateService,
public navParams: NavParams,
public toastCtrl: ToastController,
private table_data: TableData,
private load: LoadingController,
private http: Http,
private com_table: TableCom
)
{
super(nav, db, alert, order, translate, undefined, false);
this.previous_page = navParams.get('previous_page');
this.subscribe_table = this.com_table.Receive().subscribe(res =>
{
await this.SaveTableAsync(res.data);
this.ReadTableAsync();
});
}
Run Code Online (Sandbox Code Playgroud)
问题是this.ReadTableAsync()基本上必须等待this.SaveTableAsync才能在启动之前完成.等待可以在这里实现吗?先感谢您 !!
我对 netstandard 非常陌生,当我想运行具有引用 netstandard 库的 .Net Framework(控制台)的调试模式时,我刚刚遇到异常。
所以我后来发现如果我将 System.IO.Ports 从 nuget 安装到 .Net Framework 项目上,异常就会消失。但是这个库已经安装到 netstandard 项目中。
所以我非常怀疑,如果我使用另一个 .net 框架项目中的 netstandard 项目,我是否需要安装 netstandard 项目所需的所有库。
我一定遗漏了一些东西,任何熟悉 netstandard 的人都可以给我一些见解。
非常感谢您的意见!
这是我从我的讲义中复制的一大堆代码
/* 2D processing */
printf("\n");
for (i=0; i<3; i++)
for (j=0; j<3; j++)
printf("%d ", *(*(ar+i)+j) );
Run Code Online (Sandbox Code Playgroud)
由于ar
指针是指地址位置,*(ar+i)
实际上是指地址位置的内容ar+i
,但我不明白它是如何工作的*(ar+i)+j
,它就像内容+数字.
还有一件事是,
(1) char *ptr; ptr = "This is a string";
(2) char *ptr = "This is a string";
Run Code Online (Sandbox Code Playgroud)
为什么(1)不能char *ptr; *ptr="this a string"
在声明和作业分开时?
非常感谢你提前.