【问题标题】:Call back with two parameters ES6 Arrow Function Angular2回调两个参数 ES6 箭头函数 Angular2
【发布时间】:2016-12-15 00:17:19
【问题描述】:

谁能告诉我我的回调函数哪里出了问题? 我需要将一个参数传递给函数进行检查,当它完成检查时,它会发回真或假。

CheckPlayer(cb,player){
   if(player >0){ 
      console.log("true");
      cb(true);
     }
   else{
      console.log("False");
      cb(false);
      }
}

 //This comes up with many errors
 //The main typescript error says: ',' expected
 CheckMe(){
    player=10;
    isGreat:Boolean;
    this.CheckPlayer((isGreat,player) => {
      if(isGreat)
        console.log("Truth");
      else
        console.log("Fase");
     });
   }

【问题讨论】:

  • 您没有将第一个参数传递给 this.checkPlayer();您将回调作为第一个参数传递,然后应该作为回调的第二个参数未定义。
  • 先排除语法错误。
  • @carmouch 好的,我切换了两者,但仍然是同样的错误
  • @Pointy 我稍微清理了一下,抱歉
  • 不断弹出的打字稿错误是:','预期

标签: javascript angular typescript callback ecmascript-6


【解决方案1】:

看签名

CheckPlayer(cb,player){

您需要传递两个不同的参数。一个是回调,另一个是播放器。您正在尝试仅传递一个参数,即回调,并将播放器添加为回调参数。这不是它的工作原理。

简单地将回调和播放器作为参数传递给CheckPlayer,就像你传递任何其他参数一样,用逗号分隔

this.CheckPlayer((isGreat) => {
  if(isGreat)
    console.log("Truth");
  else
    console.log("Fase");
 }, player);

虽然通常您将回调作为最后一个参数。它只是让代码看起来更干净

CheckPlayer(player, cb){


this.CheckPlayer(player, (isGreat) => {
  if(isGreat)
    console.log("Truth");
  else
    console.log("Fase");
 });

Playground

【讨论】:

  • 当我尝试调用该函数时,我仍然遇到同样的错误。仍然说它期待一个','
  • CheckMe 方法顶部的变量playerisGreat 需要使用letvar。这是我得到的唯一错误
  • 是的,出于某种原因,这对我不起作用。谢谢你,虽然我真的很感激,但我最终只使用了一个 Promise
  • 在底部查看我的游乐场链接
猜你喜欢
  • 2016-04-07
  • 2019-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-07
  • 2022-01-21
  • 2016-03-25
相关资源
最近更新 更多