我有一些方法,它做了一些東西,並調用回調,並在一定的時間後,它做同樣的事情。承諾替換多次調用回調gettin
var myFunction = function(callback){
setInterval(function(){
var stuff;
//do some stuff
callback(stuff)
}, 3000);
}
我可以將其更改爲承諾函數嗎?如果是,用戶將如何調用該功能?我打算使用藍鳥圖書館。
我有一些方法,它做了一些東西,並調用回調,並在一定的時間後,它做同樣的事情。承諾替換多次調用回調gettin
var myFunction = function(callback){
setInterval(function(){
var stuff;
//do some stuff
callback(stuff)
}, 3000);
}
我可以將其更改爲承諾函數嗎?如果是,用戶將如何調用該功能?我打算使用藍鳥圖書館。
承諾是一次性設備。他們一次又一次地解決他們的國家不能改變的問題。因此,它們對於經常性事件不是好的或者可行的替代品。
要使用一個承諾,出現一次以上的事情,你必須有某種接口,允許你每次創建一個新的承諾,並且調用者每次都能以某種方式訪問新的承諾。這似乎並不符合您的特定界面。
像您使用的簡單回調是重複事件的最合理的接口。
OP在關於使用承諾處理從區間觸發函數內進行的異步調用的結果的評論中詢問。這將是這樣的:
var myFunction = function(callback){
setInterval(function(){
var promise = new Promise(function(resolve,reject) {
var stuff;
// Do some potentially-long-running work that modifies 'stuff'
if (stuffWorked)
resolve(stuff);
else
reject(stuff);
});
promise.then(function(returnVal) {
callback(returnVal);
});
}, 3000);
}
這是使用ECMAscript 6 form of promises。很多其他的實現存在... jQuery,q等。如果需要,我可以添加其他風味的示例。
即使我們在內部使用諾言,誰曾經使用該方法仍然會用回調調用它,對吧? – Neo
1.您從'myFunction'返回承諾2.您解決'setInterval'中的承諾 – zerkms
您可以詳細介紹一下您希望完成的承諾嗎? –
我的理解是,當我們呼籲解決問題時,承諾就會完成,我們可以多次調用解析嗎? – Neo