我有这样一个应用场景,有一台设备,我能向设备发送命令(比如用方法 A和方法B),但该方法不会返回命令成功与否,我还能想设备查询设备状态(比如方法M),设备的状态有几个(比如方法A成功的话会使得设备状态变为X,方法B成功的话会使得设备状态变为Y),实际应用中,当使用方法A使得设备状态变为X之后,才能使用方法B使得状态变为Y,由于方便不能返回状态,只能使用方法A之后,使用方法M不断的读取设备状态,确认转变为X之后,再使用方法B,确认状态变为Y以后整个过程才完成。由于使用方法A之后,设备需要一点点时间状态才能转变为X,同理方法B也是如此,因此我打算做两个有返回值的新方法a 和 b,a方法想法是这样的:使用方法A之后,每隔一定时间用方法M查询状态是否变为X,如果变为X则a方法返回成功,如果查询一段时间后发现状态没有改变,则认为是超时,返回失败。另外,使用a,b方法时,必须a方法有准确的返回值之后才能确认b方法是否执行,比如a方法返回超时的时候,就不再使用b方法。
我也简单实现了下,就是发送A方法后,用一个计时器,间隔200ms用M方法查询状态,使用15次即3s之后没有变为状态A则返回超时,现在的问题是js是一个单线程的,进入计时器之后就为异步,a方法在使用A方法之后,进入计时器接着就返回了,而计时器要在3s之后才返回,效果就不一样,我想问的是哪位朋友能帮我解决一下这个问题,或者在我这上面改造,或者另外用新的思路,万般感谢!!