如何兑现两个承诺?使代码等到执行完成?

时间:2019-06-16 14:10:28

标签: typescript

拥有这样的代码

如果用户是当前用户,我试图使该函数返回true,但问题是代码执行不等待并且甚至在执行此代码之前就完成了吗?

我应该使用异步并等待吗?

如何在这里让Typescript等待获取resultSet的值?

P.S:我是Typescript的新手

        const resultSet=  WorkItemFormService.getService().then(
            function(ServiceWTest){               

                const b=ServiceWTest.getFieldValues([userField]).then(function(value)
                {
                    var a=false;
                    if(currentUser==actualUser)
                    {
                        a=true;

                    }
                    else
                    {

                    }
                    return Promise.resolve(a);
                });  
            return Promise.resolve(b);
        });

        var actiona=resultSet.toString();

1 个答案:

答案 0 :(得分:1)

我认为您在此问题中没有足够的上下文,并且/或者在此问题完全形成之前有一些问题需要解决。例如。 actualUser来自哪里,您打算如何在内部函数中使用变量value

更广泛地解决此问题,将其应用于此处的广义笔触,async / await将是一个很好的解决方案。我认为,如果我正确地阅读了意图,那么您正在寻找类似以下的内容:

async function myFunction() {
  const ServiceWTest = await WorkItemFormService.getService();
  const actualUser = await ServiceWTest.getFieldValues([userField]);
  const isCurrentUser = currentUser === actualUser;
  // Here you probably want to call a callback that handles what happens once you've found out the answer to "is this the current user?"
  doSomethingWith(isCurrentUser);
}

在诺言中,类似

WorkItemFormService.getService().then(ServiceWTest => (
  ServiceWTest.getFieldValues([userField]).then(actualUser => (
    actualUser === currentUser
  )
)).then(isActualUser => {
  doSomethingWith(isActualUser)
}