Первый подход, использующий API выборки, справедливо возвращает undefined
, так как вы не возвращаете жизнеспособный объект. Обратите внимание, что возвращаемое значение само по себе является обещанием, а не данными, вам нужно вызвать then()
для регистрации данных. В настоящее время нет способа присвоить возвращаемые данные непосредственно переменной.
Что касается второго примера, если вы поместите console.log в client.onreadystatechange
, он, конечно, будет регистрировать ответ дважды, поскольку он вызывается несколько раз для одного запроса. Вы должны регистрировать ответ только в том случае, если код ответа - 200 OK
и состояние завершено со значением 4.
function getText(url) {
return fetch(url) //notice the return, it is returning a thenable
.then(text => text.text())
}
getText("https://jsonplaceholder.typicode.com/todos/1").then(d => console.log(d));
//Using Async/Await
async function getTextAsync(url) {
let text = await fetch(url)
let data = await text.text()
return data;
}
getTextAsync("https://jsonplaceholder.typicode.com/todos/1").then(d => console.log(d));
//Using XMLHttpRequest
function getTextXml(url) {
var client = new XMLHttpRequest();
client.open('GET', url);
client.onreadystatechange = function() {
if (client.readyState == 4 && client.status == 200) //notice the response code and the state code
{
if (client.responseText)
{
console.log(client.responseText);
}
}
}
client.send();
}
getTextXml("https://jsonplaceholder.typicode.com/todos/1");
Можно использовать следующую анимацию на свойстве слоя UIVIEW. Я протестировал его.
UIView *viewToSpin = ...;
CABasicAnimation* spinAnimation = [CABasicAnimation
animationWithKeyPath:@"transform.rotation"];
spinAnimation.toValue = [NSNumber numberWithFloat:5*2*M_PI];
[viewToSpin.layer addAnimation:spinAnimation forKey:@"spinAnimation"];
Получение непрерывного эффекта вращения немного хитро, но я описываю средство сделать это здесь . Да, Базовая Анимация, кажется, оптимизирует, преобразовывает к самой близкой конечной позиции в кругу единицы. Метод я описываю там цепочки несколько анимаций полувращения вместе для создания полных вращений, хотя Вы действительно замечаете небольшую задержку в передаче от одной анимации до следующего.
, Возможно, CAKeyframeAnimation, созданный с этими значениями полувращения, был бы правильным способом пойти. Затем Вы могли также управлять ускорением и замедлением.