Angular 我怎样才能得到这个承诺的价值?
在编写单元测试时,我遇到了一个必须异步使用承诺的用例 我怎样才能得到这个承诺的价值Angular 我怎样才能得到这个承诺的价值?,angular,typescript,promise,jasmine,es6-promise,Angular,Typescript,Promise,Jasmine,Es6 Promise,在编写单元测试时,我遇到了一个必须异步使用承诺的用例 我怎样才能得到这个承诺的价值 let purposes: Promise<ProcessingPurpose[]> = new Promise((resolve, reject) => { return [{ id: 'id1', name:'p1'}, {id: 'id2', name: 'p2'}]; }); 预期结果应该是一个对象数组。的目标是处理异步操作。 因此,您的代码不一定按照书面顺序执行 这通常用于网
let purposes: Promise<ProcessingPurpose[]> = new Promise((resolve, reject) => {
return [{ id: 'id1', name:'p1'}, {id: 'id2', name: 'p2'}];
});
预期结果应该是一个对象数组。的目标是处理异步操作。
因此,您的代码不一定按照书面顺序执行
这通常用于网络相关的数据获取,但也可用于并行执行Javascript代码。因为JS是单线程的
如果将条件置于then()
之外,则无法知道在执行expect(value.toEqual(metadataServiceTest.getPurposes())
时是否已提交value
此外,如果您的代码不是异步的,您可能不需要承诺,这将返回您所期望的线性流
metadataV1ClientTestSpy.getAllProcessingPurposes.and.returnValue(purposes);
purposes.then(value => expect(value).toEqual(metadataServiceTest.getPurposes()));