2014-08-31 3 views
0
var dev = [device.id](or null); 

function console(stdout){$('#console').text(stdout)} 

function adbShell(command){ 
if(dev==null){throw Error('adb >No KFSOWI detected')} 
client.shell(dev,command) 
.then(function(output){console(output)}) 
}; 

Я пытаюсь создать функцию для запуска ADB команды оболочки, и возвращает вывод на консоль, но только возвращение я когда-либо получаю [объект Object]Почему выход всегда [объект Object]?

+0

Я предполагаю, что вывод является объектом, вам может потребоваться инкапсулировать его в 'JSON.stringify();' –

ответ

0

Это происходит потому, что "" + {} - строение любого объекта, который не определяет toString - результаты в "[object Object]". В этом случае преобразование в строку, вероятно, происходит в функции .text.

Как предложено meanIOstack, это может иметь смысл использовать JSON.stringify для создания «более полезной» строки. Например;

function console (obj) { 
    var str = typeof obj === "string" ? obj : JSON.stringify(obj) 
    $('#console').text(str) 
} 

С другой стороны, «реальная проблема» может быть, что output не вычисляется ожидаемое значение; по крайней мере, указанная выше функция даст лучшее представление об , которое возвращается.

+0

Я бы хотел сказать, что сработало. Тот же результат. У меня был этот вопрос до этого и решил, но не помню, как это сделать. Мне удалось получить другой результат, но теперь он всегда равен нулю. Вероятно, стоит упомянуть, что эта проблема связана прежде всего с модулем узла adbkit – KyleBerries

+0

@KyleBerries. Если это дает тот же результат, то [ToString] происходит раньше, чем вызов на консоль .. но применяйте тот же подход; сериализуйте объект [в JSON] * before *, он используется как/неявно преобразованный в текст, чтобы он мог быть правильно представлен как текст. – user2864740

+0

Можете ли вы объяснить причину этой проблемы? У меня была такая же проблема в разных сценариях. Вышеупомянутый ответ, вероятно, является хорошим объяснением, но я его не понимаю. То есть "" + {} – KyleBerries

Смежные вопросы