【问题标题】:Can an angular function be partially async?角度函数可以部分异步吗?
【发布时间】:2021-10-25 10:42:09
【问题描述】:

我目前有如下方法:

async doCreateProduct(){

if(!canProceed){
  throw new Error("Cannot Proceed");
}

// this.create product calls api to return an id
var generatedId = await lastValueFrom(this.createProduct());

if(generatedId != null){
  // do other actions
}
}

我的问题是 - 我必须使方法异步,只是因为它需要等待从 createProduct 获取 generatedId 才能决定它是否会执行其他操作。

这是一个好方法吗?因为我相信该函数会期望返回一个 Promise。所以 throw new Error 部分实际上感觉不对。

我的单元测试也未能得到错误:未处理的承诺拒绝:

describe('When cannot proceed', () => {
 it('should throw error', () => {
 expect(() => service.doCreateProduct()).toThrowError();
 });
 });

知道我做错了什么吗?

【问题讨论】:

    标签: angular


    【解决方案1】:

    你可以这样做,它只会在doCreateProduct为真时返回promise;

    function hello (doCreateProduct = true) {
            if (!doCreateProduct) {
                return false;
            } else {
            return new Promise(async (res, rej) => {
                   const generatedId = await lastValueFrom(this.createProduct()); 
                    res(generatedId);
            })
            }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-08-23
      • 2011-12-30
      • 1970-01-01
      • 2021-01-11
      • 1970-01-01
      • 2019-08-18
      相关资源
      最近更新 更多