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

Javascript 如何获取从settimeout调用的函数的返回值,javascript,promise,settimeout,helper,lightning,Javascript,Promise,Settimeout,Helper,Lightning,我已经设置了live agent,我正在尝试在代理端设置一个警报,当客户在一定时间间隔后没有回复他的消息时 以下是我试图实现的目标(所有这些都在js帮助程序中,由js控制器委派) 声明了一个全局变量globalvariable1,该变量跟踪其已更改的值 使用了onAgentMessageSend组件,该组件在代理聊天时激发 当来自代理或客户时,用于更改全局值的函数 当客户发送消息时激发的方法 onNewMessageFromEndUser:函数(cmp、recordId、内容、名称、类型、时

我已经设置了live agent,我正在尝试在代理端设置一个警报,当客户在一定时间间隔后没有回复他的消息时

以下是我试图实现的目标(所有这些都在js帮助程序中,由js控制器委派)

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

  • 使用了onAgentMessageSend组件,该组件在代理聊天时激发

  • 当来自代理或客户时,用于更改全局值的函数
  • 当客户发送消息时激发的方法

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

  • 总而言之,我在这里试图实现的是,一旦代理聊天,计时器设置为5秒。在该时间范围内,如果客户回复,则全局变量会更改并继续。如果客户端没有回复,则全局变量仍然是默认值,然后它会发出警报,指示存在错误未回答的问题


    但是Settimeout的结果是无法实现的,请您在此提供帮助,以获得任何其他方法来实现这一点,或者自行纠正这一点?

    您需要在
    Settimeout
    内执行逻辑,或者创建一个函数并在timeout内调用它

    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);           
    },
    

    您需要在
    setTimeout
    内执行逻辑,或者创建一个函数并在timeout内调用它

    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);           
    },
    

    这就是我所做的,这并没有发生,因为在settime out内部,返回的值并没有发生captured@victor您是否能够获取self.checkMessageSenderAndResetCounter(cmp)的值外部
    设置超时
    ?如果是,则尝试使用箭头更新的代码功能,该功能将访问外部作用域。这是我所做的,但没有发生,因为内部设置超时返回的值不存在captured@victor您是否能够获取self.checkMessageSenderAndResetCounter(cmp)的值外部
    设置超时
    ?如果是,请尝试使用箭头功能更新代码,该功能将访问外部范围
      this.globalvariable1='Customer';},
    
    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);           
    },