Aby skorzystać z obietnicy, musisz zadzwonić do funkcji, która tworzy obietnicę, lub musisz ją utworzyć samodzielnie. Tak naprawdę nie opisać problem, jesteś naprawdę stara się rozwiązać, ale oto w jaki sposób stworzyć obietnicę siebie:
function justTesting(input) {
return new Promise(function(resolve, reject) {
// some async operation here
setTimeout(function() {
// resolve the promise with some value
resolve(input + 10);
}, 500);
});
}
justTesting(29).then(function(val) {
// you access the value from the promise here
log(val);
});
// display output in snippet
function log(x) {
document.write(x);
}
Albo, jeśli już mają funkcję, która zwraca obietnica, można użyć tej funkcji i zwraca jego obietnicę:
// function that returns a promise
function delay(t) {
return new Promise(function(resolve) {
setTimeout(function() {
resolve();
}, t);
});
}
function justTesting(input) {
return delay(100).then(function() {
return input + 10;
});
}
justTesting(29).then(function(val) {
// you access the value from the promise here
log(val);
});
// display output in snippet
function log(x) {
document.write(x);
}
Wartość zwracana wywołania 'then()' jest ponownie obietnicą, która zawija wartość zwróconą przez użytkownika. – Sirko
Masz błąd składni, nie sądzę, że to nawet analizuje. – djechlin
test jest niezdefiniowany, ponieważ justTest nie zwraca nic w twoim przykładzie (nie masz zwrotu). Dodaj zwrot, a test zostanie zdefiniowany jako obietnica. –