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
添加回答
举报