小编nir*_*iry的帖子

异步函数在循环内部不会产生立即结果

我是nodejs的新手,我所做的是将LCD面板和4x4膜矩阵键盘连接到Raspberry Pi,我使用Node.js对它们进行了编程.我想要实现的是每当按下一个键时,它应该立即显示在LCD面板上,当我按下#时它应该停止输入.

为此,我使用了包装液晶显示器https://www.npmjs.com/package/lcd和RPIO https://github.com/jperkin/node-rpio,因为我必须不断检查用户输入我已经把代码为了在while循环和内部输入,我编写了print语句,这就是问题的来源.当我按下键盘上的键时LCD面板不显示任何字符,但是当我按#时,程序退出并且所有字符都显示在LCD面板上.

我写的代码如下.

var rpio = require('rpio');
var Lcd = require('lcd'),//This is asynchronous function
    lcd = new Lcd({
        rs: 18,
        e: 23,
        data: [24, 17, 27, 22],
        cols: 8,
        rows: 2
    });
var matrix=[[1,2,3,'A'],
            [4,5,6,'B'],
            [7,8,9,'C'],
            ['*',0,'#','D']]
var row=[37,35,33,31];
var col=[29,23,40,38];
for (var i = 0; i < 4; i++) {
    rpio.open(col[i], rpio.OUTPUT, rpio.HIGH);
}
for (var i = 0; i < 4; i++) {
    rpio.open(row[i], rpio.INPUT, rpio.PULL_UP);
}
var code="";
var comeout=0;
lcd.on('ready', function() …
Run Code Online (Sandbox Code Playgroud)

javascript node.js npm raspberry-pi

6
推荐指数
1
解决办法
135
查看次数

Node JS/V8解构bug?

使用节点8.4.0:

$ node
> {x, y} = {x: 1, y: 2}
{ x: 1, y: 2 }
>
Run Code Online (Sandbox Code Playgroud)

但是,以下错误也是非交互式的:(唯一的区别是分号)

$ node
> {x, y} = {x: 1, y: 2};
...
Run Code Online (Sandbox Code Playgroud)

同样在Chrome控制台中:

> {x,y} = {x:1, y:2}
< {x: 1, y: 2}
> {x,y} = {x:1, y:2};
x VM253:1 Uncaught SyntaxError: Unexpected token =
Run Code Online (Sandbox Code Playgroud)

有谁能解释一下?

澄清

这不是关于let,var或cosnt解构,它按预期工作.这是关于先前定义的变量(或非严格模式):来自chrome控制台:

> let a, b;
< undefined
> [a, b] = [1, 2];
< >(2) [1, 2]
> a
< 1
> b
< 2 …
Run Code Online (Sandbox Code Playgroud)

javascript v8 destructuring node.js ecmascript-6

4
推荐指数
2
解决办法
761
查看次数