Почему бы не сбросить с помощью оператора = ()? Это не является спорным и более читаемым.
A a;
//do something that changes the state of a
a = A(); // reset the thing
@RandyCasburn Спасибо за ваш ответ, мистер Рэнди Кэсберн, я не получил никаких ошибок от API. Я обсуждаю эту тему с коллегой, и он сказал мне, что с кодом, который вы мне предоставили, API не получает запрос. Он думает, что это из-за типа контента, который вы указали для application / json, наш API принимает только application / x-www-form-urlencoded, после этого я попробовал ваш путь, изменив тип контента на application / x-www- форма-urlencoded, но я не получил ответа, и я не уверен, что запрос был получен. Мы используем Express API, звонки осуществляются с помощью axios. Мой код для моего нативного приложения такой же, как и для моего настольного браузера, но я удалил его из нативного приложения.
Привет, Викман, и добро пожаловать на SO.
Вы запутались, потому что пытаетесь использовать три разных API с трех разных платформ одновременно. Вот что я имею в виду:
querystring
из NodeJS alert()
из окна контекст веб-браузера Во-первых, я рекомендую сделать вашу жизнь проще, придерживаясь исключительно API-интерфейсов NativeScript. Вам не нужно 2000 строк Axios, чтобы сохранить несколько нажатий клавиш. Документация Axios убедила вас, что вы должны использовать метод querystring.stringify()
для передачи параметров запроса вместе с вашим запросом. К сожалению, объект querystring
является объектом NodeJS и может или не может быть доступен во время выполнения Android / iOS. Так что уничтожь Аксиоса и сделай свою жизнь проще.
Наконец, убедитесь, что вы не используете код, предназначенный для работы только в браузере (например, alert()
) или только в NodeJS (но не в собственных средах выполнения).
Чтобы обеспечить публикацию работ, используйте HTTP-API NativeScript, который задокументирован здесь:
https://docs.nativescript.org/ns-framework-modules/http [1117 ]
Измените свой код на это:
const httpModule = require("http");
const dialogs = require("tns-core-modules/ui/dialogs");
httpModule.request({
url: url,
method: "POST",
headers: { "Content-Type": "application/json" },
content: JSON.stringify({
grant_type: config.grant_type,
username: config.API_username,
password: config.API_password,
APIKeys: config.API_key
})
}).then((response) => {
const result = response.content.toJSON();
dialogs.alert(result);
}, (e) => {
dialogs.alert(JSON.stringify(e));
});
Это будет работать в вашей среде NativeScript.
РЕДАКТИРОВАТЬ: Прочитав ваш комментарий об устройстве и alert
, я отредактировал код, чтобы учесть это.