我理解访问Promise的值,我将使用“then”回调附加到它。
但是,我想知道如何影响它之外的背景?
let outsideVar = 0;
promiseA.then(value => {
outsideVar = 1;
})
console.log(outsideVar); //0
如您所见,我想将outsideVar更改为1
[编辑]这个问题是看看承诺是否会影响它之外的全局变量,以及是否有可能做到这一点。
不幸的是,这是不可能的。
答案 0 :(得分:4)
您的问题没有改变outsideVar
,而是您过早检查它。
Promise
是异步的,所以你需要等到它完成输出。
let outsideVar = 0;
promiseA.then(value => {
outsideVar = 1;
}).then(() => console.log(outsideVar));
开始使用Promise
后,您需要继续编写异步代码。
如果你使用像Babel这样预处理器await
预设,你可以使用async
和es2017
。
但他们有一些警告:
async
的函数中。以下是示例:
let outsideVar = 0;
const doSomething = async () => {
await Promise.resolve(); // something that is async
outsideVar = 1;
};
await doSomething();
console.log(outsideVar);
答案 1 :(得分:0)
`
let ousideVar = 0;
function promiseA(){
return new Promise( function(resolve, reject){
resolve();
})
}
promiseA().then(function(){
ousideVar = 1;
//when promise resolved
console.log(ousideVar) // 1
})
console.log(ousideVar) // 0
`当你的承诺解决了你的“outsideVar”时,用当时的新值替换 例如:
let outsideVar = 0;
promiseA().then(value => {
outsideVar = 1;
})
console.log(outsideVar);
当promiseA调用它时,它返回一个回调,并将您的值替换为新值
outsideVar = 1;