Obietnica (ang. promise) – jest to konstrukcja programistyczna występująca m.in. w języku JavaScript. Jest to obiekt, który zawiera wynik jakiejś operacji, która może zakończyć się w dowolnym czasie. Obietnice służą do tworzenia asynchronicznego kodu[1]. Obietnice zostały dodane do wersji ES6 (ES2015) standardu ECMAScript.
var p = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve("hello promise");
}, 1000);
});
p.then(function(value) {
alert(value);
}).catch(function() {
alert("coś poszło nie tak");
});
W powyższym przykładzie do konstruktora przekazana jest funkcja, gdzie w dowolnym momencie może zostać wywołana jedna z funkcji resolve lub reject, które zrealizują obietnicę lub ją odrzucą. Powyższy przykład po jednej sekundzie wyświetli komunikat "hello promise". Gdyby wewnątrz funkcji wywołano reject, wywołana by była funkcja catch.
library(magrittr) # import %>% operator
future::future({
res <- httr::GET("http://httpbin.org/get")
httr::content(res, as="parsed")
}) %>% promises::then(function(data) {
print(data)
})
W języku R do tworzenia obietnic stosuje się pakiety future oraz promises. Istnieje kilka alternatywnych sposobów obsługiwania obietnic z tymi pakietami[2].