我有一个标记sendMessageFlag
,如果它是真的我想将函数obj设置为fileData
但它总是说 undefined 。
ctrl.js
var sendMessageFlag;
function sendMessageToFile (data){
return data;
}
socket.on('ditConsumer',function (data) {
var obj = {
file:$scope.filename,
data:data
}
if(sendMessageFlag) {
console.log('send messageto FIe in consumer');
sendMessageToFile(obj);
}
});
if($scope.filename) {
sendMessageFlag = true;
var fileData = sendMessageToFile(data);
console.log('CONSUMER MESSAGE', fileData);
socket.emit('startrecording', fileData);
}
答案 0 :(得分:0)
在向上声明变量时,尚未初始化sendMessageFlag的值。如果首先触发socket.on('ditConsumer'),则该值未定义。您可能希望使用false初始化它,然后在底部的if块中将其设置为true。
答案 1 :(得分:0)
如果我理解正确,下面是解决方案(这样你就不会在'console.log('CONSUMER MESSAGE',fileData)中得到未定义;':
if(sendMessageFlag) {
console.log('send messageto FIe in consumer');
return sendMessageToFile(obj);
}
你也应该从if条件返回。