Я довольно новичок с nodejs, поэтому, пожалуйста, не позволяйте ненависти течь через вас, если я задаю простые вопросы.Node.js async parallel TypeError: задача не является функцией на малине pi
Я пытаюсь использовать nodejs на малине pi 3 для управления двумя моторами. Я получаю async задачу не является функцией ошибки. Я искал ответ, но ни один из них, который я нашел, не работал для меня. Я мог бы использовать руку с этим.
Ниже приведен код: The error
var express = require('express'),
http = require('http'),
path = require('path'),
async = require("async"),
rpio = require('rpio'),
app = express();
app.set('port', 3000);
app.use(express.static(path.join(__dirname, '/static')));
var http = http.createServer(app).listen(app.get('port'), function() {
console.log('Serverul started on port ' + app.get('port'));
});
var io = require('socket.io')(http);
var tank = {
motors: {
leftFront: 11,
leftBack: 12,
rightFront: 13,
rightBack: 15
},
init: function() {
rpio.open(this.motors.leftFront, rpio.OUTPUT);
rpio.open(this.motors.leftBack, rpio.OUTPUT);
rpio.open(this.motors.rightFront, rpio.OUTPUT);
rpio.open(this.motors.rightBack, rpio.OUTPUT);
},
moveForward: function() {
async.parallel([
rpio.write(this.motors.leftFront, rpio.HIGH),
rpio.write(this.motors.rightFront, rpio.HIGH)
]);
},
moveBackward: function() {
async.parallel([
gpio.write(this.motors.leftBack, 1),
gpio.write(this.motors.rightBack, 1)
]);
},
moveLeft: function() {
gpio.write(this.motors.leftFront, 1);
},
moveRight: function() {
gpio.write(this.motors.rightFront, 1);
},
stop: function() {
async.parallel([
rpio.write(this.motors.leftFront, rpio.LOW),
rpio.write(this.motors.leftBack, rpio.LOW),
rpio.write(this.motors.rightFront, rpio.LOW),
rpio.write(this.motors.rightBack, rpio.LOW)
]);
}
};
io.sockets.on('connection', function(socket) {
socket.on('move', function(direction) {
switch(direction) {
case 'up':
tank.moveForward();
break;
case 'down':
tank.moveBackward();
break;
case 'left':
tank.moveLeft();
break;
case 'right':
tank.moveRight();
break;
}
});
socket.on('stop', function(dir) {
tank.stop();
});
});
tank.init();
async.parallel принимает в качестве первого параметра набор функций. Каждая функция возвращает обратный вызов после его завершения. Вы проверили, возвращает ли rpio.write обратный вызов после его выполнения, обещание или ничего? – yBrodsky