Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 我怎样才能得到这个承诺的价值?_Angular_Typescript_Promise_Jasmine_Es6 Promise - Fatal编程技术网

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()));