Promise предназначен для обработки async
операций (подумайте о вызовах ajax или коде, выполняемом внутри setTimeout
), поэтому вы не можете получить что-то подобное
console.log(getPosition().then())
вам нужно передать обратный вызов методу then
, этот обратный вызов будет выполнен, когда обещанное будет разрешено (подумайте об успешном обратном вызове в jquery
)
Так что в основном в вашем примере вы бы получили что-то вроде этого:
function main() {
return getPosition();
}
main().then(console.log);
вы также можете сохранить обещание в переменной, чтобы использовать его где-то еще в вашем коде
var position = main();
position.then(console.log);
position.then(console.log);
position.then(positionValue => {/* do what you want with the value */});
Обратите внимание, что вызов then
несколько раз не будет выполнять обещание несколько раз, оно будет разрешено только один раз
Вот документация обещания