您是否需要取消订阅Angular 2 http调用以防止内存泄漏?
fetchFilm(index) {
var sub = this._http.get(`http://example.com`)
.map(result => result.json())
.map(json => {
dispatch(this.receiveFilm(json));
})
.subscribe(e=>sub.unsubscribe());
...
Run Code Online (Sandbox Code Playgroud) 官方仅$.cssHooks在jQuery API文档中记录,并$.valHooks在句子中提到了解决已知问题的方法.val().
我想知道除了这两个之外,jQuery中有多少个钩子,我们应该$.valHooks在插件开发中使用它们吗?如果是这样,我认为它应该记录为一个专门的主题,而不是一句话.
我的角度路线配置如下:
export const routes: Routes = [
{ path: 'mgmt', ... },
{ path: 'about', ... },
{ path: '**', component: PageNotFoundCmp }
];
Run Code Online (Sandbox Code Playgroud)
但是,在页面上,现在有一个链接(<a href="/help/en/index.html" target="_blank">)来帮助页面,这些页面是托管在同一服务器上的静态资源。使用上面的路由配置,显然它将与其他路由匹配**-找不到页面。
假设我们不能在另一个域中托管帮助资源,有什么方法可以将/help/**路径排除在角度路由之外?还是您认为这是对角度支持的有效特征要求?
在学习golang的过程中,当我试图理解内存模型规范中描述的通道通信时,我有点困惑,如下所示:
- 通道上的发送在该通道的相应接收完成之前发生.
- 关闭通道发生在返回零值的接收之前,因为通道已关闭.
- 来自无缓冲通道的接收在该通道上的发送完成之前发生.
- 具有容量C的信道上的第k个接收发生在从该信道发送的第k + Cth个完成之前.
前两条规则清晰且易于理解,而我对第三条规则感到困惑,这似乎与其他规则相反......我是否错过了任何关于无缓冲通道的特殊规定?或者我是否正确如果我像下面的规范中的示例那样:
var c = make(chan int)
var a string
func f() {
a = "hello, world"
<-c // A
}
func main() {
go f()
c <- 0 // B
print(a)
}
Run Code Online (Sandbox Code Playgroud)
对于无缓冲通道,发送操作(B)被阻塞,直到接收器准备好接收值(A)?(比如:B开始并且直到A执行才返回)它准确吗?
我在Effective Go规范中找到了以下陈述,但是我的理解仍然存在差异......那么有人可以用简单直接的方式解释这个吗?
接收器始终阻塞,直到有数据要接收.如果通道未缓冲,则发送方将阻塞,直到接收方收到该值.如果通道有缓冲区,则发送方仅阻塞,直到将值复制到缓冲区为止; 如果缓冲区已满,则表示等待某个接收方检索到某个值.
我不知道这是否是个好习惯。但是下面是我想做的事情:
我有2个延迟加载的模块:ManagementModule和ConfigurationModule,并且路由配置如下:
const routes: Routes = [
{path: '', redirectTo: 'management', pathMatch: 'full'}, {
path: 'configuration',
loadChildren: './configuration/configuration.module#ConfigurationModule',
canLoad: [UnconfiguredGuard]
},
{
path: 'management',
loadChildren: './management/management.module#ManagementModule',
canLoad: [ConfiguredGuard]
}
]
Run Code Online (Sandbox Code Playgroud)
基本上,该想法是检查系统状态并重定向到不同的阶段,例如。如果尚未配置sys,则重定向到/configuration,否则,重定向到/management。
在我添加@ngrx/store到项目中之前,两个canLoad防护很简单:
// ConfiguredGuard:
canLoad(route) {
return this.configService.isConfigured()
.do((configured: boolean) => {
if (!configured) {
// redirect to /configuration if unconfigured
this.router.navigate(['/configuration']);
}
})
}
Run Code Online (Sandbox Code Playgroud)
现在,我要采用所有@ ngrx / {store,effects,router-store}库,然后将上述保护更改为:
canLoad(route) {
this.store.dispatch(new CheckInitStatus());
return this.store.select('initStatus')
.filter(s => s.checked) …Run Code Online (Sandbox Code Playgroud) 在我的页面中,doctype被声明为:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
Run Code Online (Sandbox Code Playgroud)
没有明确指定DTD.我想在IE中哪些DTD会被默认?
似乎它的行为不一样
"http://www.w3.org/TR/html4/loose.dtd"
Run Code Online (Sandbox Code Playgroud)
因为我添加了loose.dtd后页面中的表格被破坏了.有人可以帮忙解释一下吗?谢谢!
angular ×3
channel ×1
dom ×1
dom-events ×1
go ×1
html ×1
jquery ×1
memory-leaks ×1
memory-model ×1
ngrx ×1
ngrx-effects ×1
router ×1
rxjs ×1