2015-10-14 85 views
0

我有一個函數返回$timeout返回的諾言。此功能還有另一條繞過$timeout調用的代碼路徑。什麼要返回非異步路徑?

爲了維護基於承諾的API,我應該在後一種路徑中返回什麼?

function foo() { 
    if(bar) { 
    return $timeout(fn); 
    } 

    return ?; // I want to maintain the promise API. This code path is expected to be synchronous. 
} 
+0

'Promise.resolve(some-value)' –

+0

'Promise'由AngularJS提供嗎? – Ben

+1

請參閱角度文檔 - https://docs.angularjs.org/api/ng/service/$q –

回答

1

的ES6承諾使用:

function foo() { 
    if(bar) { 
     return $timeout(fn); 
    } 
    return Promise.resolve(some-value); 
} 

爲AngularJS,您可以使用

function foo() { 
    if(bar) { 
     return $timeout(fn); 
    } 
    return $q.resolve(some-value); 
} 

function foo() { 
    if(bar) { 
     return $timeout(fn); 
    } 
    return $q.when(some-value); 
} 

$ q.resolve爲$ q的別名當