【问题标题】:How can I get the value of this promise?我怎样才能得到这个承诺的价值?
【发布时间】:2021-06-07 08:02:56
【问题描述】:

在编写单元测试时,我遇到了一个必须异步使用 Promise 的用例。

我怎样才能得到这个承诺的价值?

let purposes: Promise<ProcessingPurpose[]> = new Promise((resolve, reject) => {
    return [{ id: 'id1', name:'p1'}, {id: 'id2', name: 'p2'}];
});

我在下面尝试了这个解决方案。但我想将条件 expect(value).toEqual(metadataServiceTest.getPurposes()) 放在 THEN() 之外

metadataV1ClientTestSpy.getAllProcessingPurposes.and.returnValue(purposes);
purposes.then(value => expect(value).toEqual(metadataServiceTest.getPurposes()));

预期的结果应该是一个对象数组。

【问题讨论】:

    标签: angular typescript promise jasmine es6-promise


    【解决方案1】:

    Promises 的目标是处理异步操作。 因此,您的代码不一定按书面顺序执行。

    这最常用于与网络相关的数据获取,但也可用于并行执行 Javascript 代码。因为 JS 在其他方面是单线程的。

    如果你把你的条件放在then()之外,当expect(value).toEqual(metadataServiceTest.getPurposes())被执行时,你无法知道value是否已经被归档。

    此外,如果您的代码不是异步的,您可能不需要 Promise,它会返回您期望的线性流。

    【讨论】:

      猜你喜欢
      • 2022-12-09
      • 1970-01-01
      • 2016-08-28
      • 1970-01-01
      相关资源
      最近更新 更多