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

javascript 中的同步回调

如何解决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 举报,一经查实,本站将立刻删除。