javascript 中的同步回调

问题描述

是的,就这样吧,我是 JS 和 espruino 的新手,所以在一个项目中卡住了;我试图在 main 函数执行后立即获得一个数组的最大值为 console.logged:

const cw = 1;
const ccw = 0;
const dataCW = [];
const peekCW = [];
const dataccw = [];
const peekccw = [];
const dataLength = 36;


const getData = (dir,t,fn) => {
    const solarIn = () => analogRead(A5);
    const dataRead = () => ((solarIn() * 65536) * 5.0) / 65536;
    const dataPush = (data) => {
        data.push(dataRead());
    };

    const peekVal = (fnc) => {
        if(dir === 1) {
            for(let i = 0; i < dataLength; i++) {
                setTimeout(() => {
                    dataPush(dataCW);
                    if(dataCW.length === dataLength) {
                        let peekValCW = Math.max.apply(null,dataCW);
                        let peekValPosCW = dataCW.indexOf(peekValCW);
                        peekCW.push(peekValPosCW);
                    }
                },i * (t / dataLength));
            }
        }
        else if(dir === 0) {
            for(let i = 0; i < dataLength; i++) {
                const forccw = setTimeout(() => {
                    dataPush(dataccw);
                    if(dataccw.length === dataLength) {
                        let peekValccw = Math.max.apply(null,dataccw);
                        let peekValPosccw = dataccw.indexOf(peekValccw);
                        peekccw.push(peekValPosccw);
                    }
                },i * (t / dataLength));
            }
        }
        fnc();
    };
    fn(peekVal,peekCW);
};


getData(cw,1000,(n,m) => n((m) => console.log(m)));

我觉得自己花了太多时间尝试自己,只对 undefined= [ ] 之类的返回感到沮丧,因为在函数执行完成后我无法正确传递它。老实说,我只对涉及回调的解决方案感兴趣,我知道 espruino 现在已经实现了 Promise,但我觉得这需要通过回调来完成,因为我觉得这是一个需要了解/掌握的重要主题。谢谢你的帮助。

问候, 乔治 M.

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)