怎么解决promise只执行一次的问题

下面是一个简单的promise调用
newPromise(function(success,){
setTimeout(function(){success()},1000);
}).then(function(){
console.log(1)
});
可以看到,控制台能够输出1
Promise的then方法可以做到回调功能,但是如果是这种情况呢?
functiontest(back){
setInterval(function(){back()},1000)
}
test(function(){
console.log(1);
});
//可以不停的输出1
而如果用promise做不到:
newPromise(function(success,){
setInterval(function(){success()},1000);
}).then(function(){
console.log(1)
});
Promise除了then,catch还有隐藏的高级功能么?
哔哔one
浏览 1140回答 2
2回答

PIPIONE

Promise只能执行一次这一点是不会改变的但是可以根据不同的业务来进行封装重复调用你可以每次重新声明一个Promise来调用functionp(){returnnewPromise(resolve=>{setTimeout(resolve,1000)}).then(()=>{console.log(1)})}setInterval(p,1000)

拉风的咖菲猫

题主没有给出应用的场景,简单说一下我的理解(也是小白兔阶段);首先个人认为题主看待Promise有一点点偏激,并非一切情况都要使用Promise的then,链式调用是为了解决异步的可读性和可维护性的问题,题主当前的情况完全可以return一个立即执行的fn(也就是用不上then关键字);其次,Promise是会有一些其他关键字,比如all,join,map(这个不确定)等等,是适用不同情况的请求场景;最后,以上只是个人见解,可能因为学习所限会有理解错误和偏差,请题主权当参考.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript