下面是一个简单的promise调用newPromise(function(success,){setTimeout(function(){success()},1000);}).then(function(){console.log(1)});可以看到,控制台能够输出1Promise的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还有隐藏的高级功能么?
2 回答
PIPIONE
TA贡献1829条经验 获得超9个赞
Promise只能执行一次这一点是不会改变的但是可以根据不同的业务来进行封装重复调用你可以每次重新声明一个Promise来调用functionp(){returnnewPromise(resolve=>{setTimeout(resolve,1000)}).then(()=>{console.log(1)})}setInterval(p,1000)
拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
题主没有给出应用的场景,简单说一下我的理解(也是小白兔阶段);首先个人认为题主看待Promise有一点点偏激,并非一切情况都要使用Promise的then,链式调用是为了解决异步的可读性和可维护性的问题,题主当前的情况完全可以return一个立即执行的fn(也就是用不上then关键字);其次,Promise是会有一些其他关键字,比如all,join,map(这个不确定)等等,是适用不同情况的请求场景;最后,以上只是个人见解,可能因为学习所限会有理解错误和偏差,请题主权当参考.
添加回答
举报
0/150
提交
取消