条件异步代码模式

时间:2017-12-01 17:49:45

标签: javascript asynchronous promise conditional

给出以下代码模式:

/my-app/services/src/main/java/com/example/my-app/business/IssuedTokenService.java:3: error: package com.examples.data.dao does not exist import com.examples.data.dao.IssuedToken;

/my-app/services/src/main/java/com/example/my-app/business/IssuedTokenService.java:4: error: package com.examples.data.repository does not exist import com.examples.data.repository.IssuedTokenRepository;

/my-app/services/src/main/java/com/example/my-app/business/IssuedTokenService.java:12: error: cannot find symbol 
    private IssuedTokenRepository issuedTokenRepository;

    symbol:   class IssuedTokenRepository
   location: class IssuedTokenService

/my-app/services/src/main/java/com/example/my-app/business/IssuedTokenService.java:15: error: cannot find symbol
   public void saveToken(IssuedToken issuedToken) {
                                  ^
   symbol:   class IssuedToken
   location: class IssuedTokenService

是否有更好的方法来处理应该始终运行的代码,但是如果运行异步代码,应该等待它完成吗?

2 个答案:

答案 0 :(得分:0)

您可以创建一个空承诺:

const step1 = doAsyncCall ? asyncCall() : Promise.resolve();
step1.then(after);

答案 1 :(得分:0)

你可能会考虑这样的事情:

let promise = Promise.resolve();

if (doAsyncCall) {
    promise = asyncCall();
}

promise.then(after);

这看起来很丑陋,但考虑到你可以使用这种模式,你将一个promise传递给一个函数而不是一个标志来指示是否应该进行调用,或者你可以将它分解为另一个返回的函数异步呼叫承诺或已经解决的承诺。

仅引用after一次,代码就更干了。