1 回答

TA貢獻1836條經驗 獲得超13個贊
傳遞給的函數中的代碼then()在承諾解決之前不會運行。所以不是這個:
promise.then(
function(result) { originalUrl = result },
function(error) { /* handle an error */ }
);
console.log(originalUrl)
...你需要做更多這樣的事情:
promise.then(
function(result) { originalUrl = result },
function(error) { /* handle an error */ }
).then(
function() { console.log(originalUrl); }
);
這是一個簡單的可運行示例,希望可以讓您了解其工作原理:
var originalUrl = undefined;
var promise = new Promise((resolve, reject) => {
setTimeout( function() {
resolve("http://example.com");
}, 250)
});
promise.then(
function(result) { originalUrl = result },
function(error) { /* handle an error */ }
).then(
function() { console.log('promise resolved: ', originalUrl); }
);
console.log('promise pending: ', originalUrl);
結果:
promise pending: undefined
promise resolved: http://example.com
添加回答
舉報