我有一些方法可以执行某些操作并调用回调,并且在一定时间后它也会执行相同的操作。
var myFunction = function(callback){
setInterval(function(){
var stuff;
//do some stuff
callback(stuff)
}, 3000);
}
我可以将此更改为承诺功能吗?如果是,用户将如何调用该功能?我打算用蓝鸟图书馆。
答案 0 :(得分:5)
Promise是一次性设备。他们只解决一次,之后就无法改变他们的状态。因此,它们对于经常性事件来说并不是好的甚至是可行的替代品。
要使用多次出现的承诺,您必须拥有某种界面,允许您每次创建新承诺,并且呼叫者每次都能以某种方式访问该新承诺。这根本不适合您的特定界面。
您正在使用的普通回调是重复事件的最合理的接口。
答案 1 :(得分:0)
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等。如果需要,我可以添加其他风格的示例。