2017-01-18 12 views
0

В Chrome DevTools разрешенное обещание вернет интерактивный объект, который можно развернуть и свернуть;Что определяет, как переменная печатается в консоли?

> Promise.resolve('foo') 
< ▶ Promise {[[PromiseStatus]]: "resolved", [[PromiseValue]]: "foo"} 

В узле разрешенное обещание вернет строку;

> Promise.resolve('foo') 
< Promise { 'x' } 

Что и кто определяет, что возвращается на консоль при визуализации переменной? Разве это стандартизировано?

+0

.. и Internet Explorer печатает «[Объект объекта]». Спасибо, Internet Explorer! – Halcyon

+1

Нет, это не стандартизировано. Больше нечего сказать. – trincot

+0

Узел использует 'util.inspect' внутри, я полагаю. Chrome делает свою собственную магию, тогда как IE просто вызывает свойство 'Symbol.toStringTag'? – Unidan

ответ

1

Таким образом, вы можете форматировать журналы консоли, здесь основы https://developer.mozilla.org/en-US/docs/Web/API/Console/log

вы также можете сделать цвета и такие, которые обсуждаются здесь:

How do I create formatted javascript console log messages

Кроме того, из вашего примера, которые могли бы быть двумя совершенно разными обещаниями (librabies), которые возвращаются. Какую версию узла вы используете?

Каждый браузер также использует консоль по-разному, поэтому вы не получите такой же ответ в браузерах или от хрома к узлу. Существуют библиотеки узлов, которые позволят вам добавлять на консоль (форматирование и т. Д.), Но я не думаю, что есть такие, которые делают его интерактивным (потому что вам нужно будет сделать интерактивный интерфейс ui, что верно для браузера, но не для вывода в a)

+0

Я использую нативные (v8) обещания. 'V8 5.5.372.33' в Chrome и' V8 5.4.500.36' в узле. – Unidan