微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获取从settimeout调用的函数的返回值

如何解决如何获取从settimeout调用的函数的返回值

我已经设置了实时座席,并且当客户在一定时间间隔内未回复邮件时,我正在尝试在座席方面设置警报

这就是我想要实现的方式(所有这些都在js帮助器中,由js控制器委派)

  1. 声明了一个全局变量globalvariable1,该变量跟踪其更改的值

  2. 使用了onAgentMessageSend组件,该组件会在代理聊天时触发

onAgentMessageSend : function(cmp,recordId,content,name,type,timestamp){
    if(type=='Agent')
       {
           var self = this;
           setTimeout(function() {
           var returnedType=self.checkMessageSenderAndResetCounter(cmp);
          },5000);           
    
           if(returnedType=='Default Value')
           {alert('Unresponsive Customer');}
           else{
           console.log('customer responded hence reset');
           globalvariable1= 'Default Value'}}
           else{
            console.log('Do nothing');}},
  1. 当来自代理商或客户时更改全局值的功能
 checkMessageSenderAndResetCounter: function(cmp) {
     
     console.log('the current value of globalvarable'+this.globalvariable1);
     return this.globalvariable1;},
  1. 当客户发消息时触发的方法

    onNewMessageFromEndUser:函数(cmp,recordId,内容名称,类型,时间戳记){

      this.globalvariable1='Customer';},

总结一下,我要在这里实现的目的是,一旦座席聊天,就设置一个计时器,比如说5秒钟。如果客户答复,则在该时间范围内,全局变量将更改并继续。如果没有来自客户端的答复,则全局变量仍然是认值,然后它会发出警报,指示存在未解决的问题。

但是Settimeout的结果是无法实现的,请您在这里帮忙寻求其他任何方式来实现这一目标,或者自己改正吗?

解决方法

您需要在setTimeout内执行逻辑或创建一个函数并在超时内调用它。

if(type=='Agent')
   {
       var self = this;
       setTimeout(() => {
       var returnedType=self.checkMessageSenderAndResetCounter(cmp);
       
       // perform rest of your logic inside
       if(returnedType=='Default Value') {
           alert('Unresponsive Customer');
       else{
           console.log('customer responded hence reset');
           globalvariable1= 'Default Value';
        }
       
      },5000);           
},

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。