【问题标题】:Can I implement promises in this case在这种情况下我可以实现承诺吗
【发布时间】:2018-10-15 05:09:09
【问题描述】:

我必须为下面的代码实现承诺,如何在这里实现承诺, 我想等到 for 循环结束。然后打印出来。

var a = ['1']; // lets just say array length should not more than 10.  

function addit(id) {
  if (id == 1) {
    a.push(id);
  } else {
    additagain(id);
  }
}):

function additagain(id) {
  a.push(id);

}):

$('.class').each(function(index) {
      id = index + 1;
      addit(id);


    };

【问题讨论】:

  • 你的代码是怎么回事?! }):??
  • 您的代码同步运行。 Promise 适用于异步任务。请使用有效的用例更新您的示例,并在此处说明您要实现的目标。
  • 这里为什么需要使用promise? for 循环是同步的
  • 这是家庭作业吗?为什么需要使用 Promise?
  • 其实你可以给这个问题一个更好的标题。请记住,这是一个免费社区,人们会使用该信息进行搜索。

标签: javascript promise


【解决方案1】:

由于所有这些方法都是同步的,因此在这种情况下实现 Promise 只需返回一个 Promise,因为 each 循环将运行到完成。

所以它可能很简单:

   return Promise.resolve().then(()=>{
      // Put your code here
   });

这个例子可以很好地将任何同步代码变成一个Promise。如果您有任何异步回调,则需要使用不同的方法。

【讨论】:

  • 感谢您的回复,在我的原始代码中,我有 ajax 请求代替 addit 和 additagain,所以我需要承诺停止,直到每个循环结束,以便我可以访问最终数组。
  • 在这种情况下,您的代码应该非常不同,如果这是您的意图,则不能使用each。但是,此答案与您输入的示例代码匹配,我认为应该将其作为答案接受,以免使人们对此感到困惑。
  • 你可以用正确的例子打开一个新问题,否则你会用这个问题的误导性答案污染这个论坛。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-10
  • 2012-03-28
  • 2016-12-16
  • 1970-01-01
  • 2016-09-12
  • 2016-11-07
相关资源
最近更新 更多