Vk api метод execute
Как риалезиравать часть кода ( //ожидать 2сек). Программа должна проверить не появился ли новый пост на свет. execute не поддерживается создание функций.
var posts = API.wall.get({“count”: 1,“owner_id”:-143352091,“offset”:1});
var post = posts.items[0];
var id=post .id; //Получаем id поста до задержки
//ожидать 2сек
var posts_2 = API.wall.get({“count”: 1,“owner_id”:-143352091,“offset”:1});
var post_2 = posts_2.items[0];
var id_2=post_2.id; //Получаем id поста после задержки
var text_2=post_2.text;
if (id !=id_2) {
return {“text”: text_2};
} else{return {“text”: null};
};
Модель того как работает js отличается от модели выполнения PHP. Чтобы выполнить какой-то код через время, нужно обернуть код в функцию, и запланировать выполнение этой функции.
Например ниже код выполнится через 1 секунуду.
setTimeout(function () {
alert(1)
}, 1000)
Тот же подход с оборачиванием кода в функцию используется когда нужно получить значение, которое не доступно сразу же при выполнении функции. Это твой случай. Код из функции, переданной в checkNewPost выполнится когда-то в будущем. В том будущем когда сама checkNewPost будет готова вызвать коллбек и передать в него результат своего выполнения.
checkNewPost(function(res) {
if (res.text) {
console.log(res.text)
}
})
Теперь само решение. Получаем значение поста, через 2 секунды, получаем еще один пост, и после этого вызываем коллбек, куда передаем результат анализа: есть пост или нет. Выше был пример как эта функция будет использоваться.
function checkNewPost(callback) {
var posts = API.wall.get({
count: 1,
owner_id: -143352091,
offset: 1
});
var post = posts.items[0];
var id = post.id; //Получаем id поста до задержки
//ожидать 2сек
setTimeout(function () {
var posts_2 = API.wall.get({
count: 1,
owner_id: -143352091,
offset: 1
});
var post_2 = posts_2.items[0];
var id_2 = post_2.id; //Получаем id поста после задержки
var text_2 = post_2.text;
if (id != id_2) {
callback({
text: text_2
})
} else {
callback({
text: null
})
};
}, 2000)
}