Как JSON.Parse может анализировать данные без получения строки json в аргументе.
var whichPromise = dataPromise.then(JSON.parse)
.then()
ожидает, что вы передадите ему функцию. Когда обещание разрешается, оно вызывает эту функцию и передает ему разрешенное значение обещания.
Итак, вы передаете ей функцию JSON.parse
, а затем она вызовет эту функцию и передаст ей значение результата обещания, которым будет ваша строка JSON. Возвращаемое значение выполнения этой функции станет разрешенным значением результирующего обещания в цепочке. Итак, в вашем случае объект Javascript, который возвращает JSON.parse()
, становится разрешенным значением вашей цепочки обещаний.
Если я введу неправильный URL в ...
Неправильный URL, очевидно, не приведет к получению нужных вам данных. В зависимости от неправильного URL-адреса, он либо создаст сетевую ошибку (такую как ошибка DNS при разрешении хоста), либо выдаст ошибку 404 (такой путь отсутствует на этом хосте), либо сервер может вернуть ответ другого типа. То, что именно возвращается из request.get()
, зависит от параметров, которые вы передаете request.get()
, и от того, как URL неверен. В некоторых случаях обещание будет отклонено, и в этом случае ваш обработчик .then()
не будет вызван. В других случаях обещание все еще может быть выполнено, но не будет данных или неправильный JSON, переданный в JSON.parse()
В результате возникнет какая-то другая ошибка.
Важно понимать, что получение кода ответа 404 при отправке неверного пути с запросом http во многих библиотеках НЕ считается ошибкой http. Вы достигли сервера, отправили ему запрос, он обработал этот запрос и вернул вам ответ. Хотя ответом может быть код состояния 404, это не обязательно считается ошибкой. Таким образом, ваш собственный код должен либо сконфигурировать библиотеку http, которую вы используете, чтобы заставить 404 или любой 4xx быть ошибкой, либо вы должны явно проверить это, чтобы правильно обработать.