Вы хотите переместить код из записной книжки Observable в обычный сценарий JavaScript.В этом случае вы не можете использовать await
, как вы это сделали.
Если вы посмотрите на страницу MDN , вы очень четко увидите, что:
Оператор ожидания используется для ожидания обещания. Может использоваться только внутри асинхронной функции.(выделение мое)
Как говорится, эта async
функция с вашим кодом внутри будет работать:
(async function foo() {
const data = Object.assign(await d3.csv("https://gist.githubusercontent.com/mbostock/3887051/raw/805adad40306cedf1a513c252ddd95e7c981885a/data.csv", d3.autoType), {
y: "Population"
});
console.log(data)
})();
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
Этот код работал внутри записной книжки из-за способа работы записных книжек:
Наблюдаемая уже поддерживает асинхронные генераторы в некотором смысле:Вы также можете определить (синхронную) ячейку генератора, которая дает обещания.Наблюдаемый ждет, пока предыдущее обещание разрешится, прежде чем вытащить следующее из генератора.( source )
Наконец, относительно вашего наблюдения, что код работал на консоли Chrome: это не просто Chrome, этот код будет работать без async
в большинстве современных браузеров.приставка.Объяснение заключается в том, что код в консоли по умолчанию заключен в async
.Вот хорошее чтение: https://medium.com/@tomsu/devtools-tips-day-7-the-simple-joys-of-async-console-578f4ce67df4