因此,如果函數的調用者(服務的用戶)可以使用該函數,那麼如果他想對函數產生的信息做些什麼的話。如果他不在乎什麼時候完成,只要有時間完成,他就可以在沒有任何基礎設施的情況下調用該函數。函數是否可以返回一個promise,或者不是?
這項工作?我不想陷入這樣一種情況,即它會在我的測試中發揮作用,但在一些不常發生的模糊情況下,它會失敗。
嗯。我想我的意思是這個。如果我寫返回諾言常規,我不得不說:
return new Promise(function (resolve, reject) { ... });
如果我的來電者不說:
.then(function() { ... }, function() { ... });
會發生什麼?我會在某個時候調用resolve()或reject(),並且不會定義解析和拒絕。 Promise構造函數是否提供了一些默認(無所作爲)定義?
我想,如果我是一個瘋狂的人,我可以在我的調用函數說:
(resolve || function() {})();
我沒跟着。你可以從函數返回任何你想要的東西,但是如果它*可能需要異步操作,你應該總是返回一個承諾。如果你問你是否需要**來使用函數的返回值,那麼答案是否定的。但是,您無法保證操作完成。 –
嗯?調用者總是可以決定它是否對返回值做了一些事情。但被調用者不知道這一點。 –
我認爲問題在於是否可以執行承諾返回異步函數,並在不添加任何解析代碼的情況下執行它的工作。答案是肯定的。但請記住,除非您確定它已完成,否則您將無法可靠地測試異步函數的工作方式。 – danh