差不多2个月前有人帮我解决了异步问题,它工作得非常好(我已经添加了分配给它),但我的程序中仍然有这个代码,我不完全确定它的作用.
原始代码是:
constructor(private ngZone: NgZone) { }
ngOnInit() {
this.getPosts()
.subscribe(x => {
this.apidata = x;
this.ngZone.onMicrotaskEmpty.first().subscribe(() => {
this.largestHeight();
});
});
}
Run Code Online (Sandbox Code Playgroud)
现在很难获得关于这方面的文档,而且我已经在过去的两个月内尝试过.他们只是给出了一个定义,但不是真实的例子.实际的路线是this.ngZone.onMicrotaskEmpty.first().subscribe(()
1)因此ngZone基本上可以访问您正忙着的区域,我理解这70%
2)onMicrotaskEmpty "当前VM Turn中没有更多的微任务队列时通知".
3)first()我得到的这个方法的唯一解释来自w3school:"first()方法返回所选元素的第一个元素." 所以我不明白的是在上面的代码中,我选择了哪些元素.我尝试在这上面运行一个console.dir和.log,但我得到的只是[object Object].所以我想知道第一个什么元素?
4)subscribe()我真的不知道为什么这里有订阅.我的印象是你只能订阅observable的/ promises.你可以订阅任何可以改变的东西,然后在它发生变化时运行订阅代码块吗?如果是这样,以前的方法是什么改变触发订阅运行的方法?
我希望似乎我已经尝试并寻找上述答案,但似乎所有内容都是为那些不需要首先阅读它的人写的......:P
我想知道是否可以同时处理两个Angular(2)项目.我打开我的第一个项目ng serve,它在服务器上运行,当我保存它更新.但是当我尝试用ng serve它打开另一个项目时会粗略地告诉你"端口:4200已经在使用".有没有办法在不同的端口上打开项目?
看到这是一个虚拟服务器,我不能认为只是给它另一个端口号可能很难.我不想一直注销一个项目,然后在更改一行后再次返回第二个项目以查看它是否有效.
问候
我正在研究这个优秀的教程,但最后我的第一个测试没有通过,因为我可以清楚地看到我正在创建两个不同的数组(和指针),并试图将它们相互比较.
现在我可以看到的教程留下了我添加的几行代码,这也是我看到问题的地方,但没有这些代码甚至没有粗略的代码.
我的所有其他测试方法都与示例相同,除了我创建以下行的方法 - 否则在运行测试时没有任何反应.
Public Sub Run(ByVal dataService As IDataService, ByVal wsService As IWorksheetService)
Dim data As Variant 'Added this line
data = dataService.GetSomeTable 'Added this line
Call wsService.WriteAllData(data) 'Added this line
End Sub
Run Code Online (Sandbox Code Playgroud)
在这里,我可以看到代码向南...
'@TestMethod
Public Sub WorksheetServiceWorksOffDataFromDataService()
'Arrange
Dim dataServiceStub As MyDataServiceStub
Set dataServiceStub = New MyDataServiceStub
Dim expected As LongLong
expected = VarPtr(dataServiceStub.GetSomeTable) 'expected creates an Array
Dim wsServiceStub As MyWorksheetServiceStub
Set wsServiceStub = New MyWorksheetServiceStub
'Act
With New MyTestableMacro
.Run dataServiceStub, wsServiceStub 'here …Run Code Online (Sandbox Code Playgroud) 无论我做什么,在构建项目后我都会收到以下错误:
Error parsing bundle asset "<path-to-project>\polyfills-es5-es2015.e1bdcd70857e70f37509.js": no such file
events.js:174
Run Code Online (Sandbox Code Playgroud)
看到我的项目创建了一个polyfills-es5.e1bdcd70857e70f37509文件和一个polyfills-es2015.25bfed26497f24d6d1d7文件,这是完全正确的。
这是在我昨天创建的nx工作区项目中
每次构建后,文件名显然都会更改,但它一直在寻找混合的es5-es2015polyfills文件。
stats文件创建为stats-es2015.json,我们的package.json设置为:"bundle-report": "webpack-bundle-analyzer dist/apps/<project-name>/stats-es2015.json"
我不断收到与错误default编译或production与ivy启用或禁用,我前夕试图删除es5BrowserSupport标志,希望只会有一个polyfills文件,但它仍然在寻找es5-es2015文件...
我得到一个值,并根据返回值,如果数据在我第一次发送时实际返回并继续,否则如果没有返回,我将获得默认值并继续处理数据。
我的问题是在 IF 语句之后返回默认数据。我无法让它返回数据,而不是可观察/订阅
它看起来像这样:
getValuesFunction() {
const getFirstValues$ = this.ApiCall.getFirstValues();
this.subscription = getFirstValues$.pipe(
map(data => {
if (data.length === 0) {
// this line is the one I have a problem with
return this.processedStockApi.getDefaultValues().subscribe();
} else {
// this line returns fine
return data;
}
}),
switchMap(data => this.apiCall.doSomethingWithData(data))
).subscribe();
}
Run Code Online (Sandbox Code Playgroud)
// API调用
getDefaultValues() {
return this.http.get<any>(this.stockUrl + 'getSelectiveDeleteData');
}
Run Code Online (Sandbox Code Playgroud) 我在这个答案中看到,对于Java,您可以在单元测试中将私有方法的可见性设置为"true",以便测试该方法.有没有这样的东西可用于VBA,所以我可以使用RD-VBA对私有方法进行单元测试?
如果没有,并且我有一个类在三个私有方法中计算出一些逻辑并将其返回给返回值,我注定只给出一个输入值并测试返回值,而不能测试三个私有方法在两者之间做升降机吗?
看完这个由叶戈尔关于不使用getter和setter一块,这听起来像的东西,对我来说很有意义。
请注意,仅当我正确实施此问题时,此问题才是关于它是否更好/最坏的问题
我想在VBA中的以下两个示例中了解我是否正确理解了这个概念,以及我是否正确地应用了它。
标准方法是:
Private userName As String
Public Property Get Name() As String
Name = userName
End Property
Public Property Let Name(rData As String)
userName = rData
End Property
Run Code Online (Sandbox Code Playgroud)
在我看来,他的方式将是这样的:
Private userName As String
Public Function returnName() As String
returnName = userName
End Function
Public Function giveNewName(newName As String) As String
userName = newName
End Function
Run Code Online (Sandbox Code Playgroud)
从上面的两个示例可以理解,如果我想更改userName的格式(可以说以全大写形式返回),则可以使用第二种方法来完成此操作,而无需更改给出名称的方法的名称。通过命名-我可以让returnName指向userNameCaps属性。我程序中的其余代码仍然可以保持不变,并指向方法userName。
但是,如果我想在第一个示例中执行此操作,则可以创建一个新属性,但随后又必须在程序中的任何地方更改代码,以指向该新属性……对吗?
换句话说,在第一个示例中,API从属性获取信息,而在第二个示例中,API从方法获取信息。
在过去的两个月里,我一直在以非常奇怪的行为挣扎,我无法确定.
我的一个django app urls文件看起来像这样:
urlpatterns = {
path('containers/', GetProductContainers.as_view()),
path('delete/<deleteTime>', DeleteProcessedStockTime.as_view()),
path('containers/', GetProductContainers.as_view()),
path('input/', InsertMultiProcessedStock.as_view()),
path('<str:stockT>/', ProcessedStockTimeView.as_view(), name="stockstime"),
path('', ProductListDetailsView.as_view(), name="details"),
}
Run Code Online (Sandbox Code Playgroud)
如您所见,此路径path('containers/', GetProductContainers.as_view()),在我的urlpatterns中是两次.这样做的原因是,只要删除一个,它就会返回一个空数组.我删除哪一个都没关系!如果两者都在那里,我得到了我期望的319条记录.我可以删除两个中的任何一个,它将返回一个空数组,但只要我有2它再次工作.
任何人都可以想到对此的解释或我如何开始调试它?
angular ×4
vba ×3
rubberduck ×2
unit-testing ×2
django ×1
get ×1
javascript ×1
node.js ×1
observable ×1
pipe ×1
rxjs ×1
set ×1
tdd ×1
typescript ×1
webpack ×1