为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

梵蒂冈之花 2018-09-30 11:07:34
下面是一个简单的promise调用new Promise(function(success,){     setTimeout(function(){success()},1000); }).then(function(){     console.log(1) });可以看到,控制台能够输出1Promise 的then方法可以做到回调功能,但是如果是这种情况呢?function test(back){     setInterval(function(){back()},1000)     } test(function(){     console.log(1); });//可以不停的输出1而如果用promise做不到:new Promise(function(success,){     setInterval(function(){success()},1000); }).then(function(){     console.log(1) });Promise 除了then,catch还有隐藏的高级功能么?
查看完整描述

2 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

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

查看完整回答
反对 回复 2018-10-09
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

Promise 只能执行一次这一点是不会改变的
但是可以根据不同的业务来进行封装
重复调用 你可以每次重新声明一个Promise来调用

function p(){
  return new Promise(resolve =>{
    setTimeout(resolve,1000)
  }).then(()=>{ 
     console.log(1)
  })
}

setInterval(p,1000)


查看完整回答
反对 回复 2018-10-09
  • 2 回答
  • 0 关注
  • 2985 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信