这在JavaScript承诺中可能吗?
我正在尝试使用JavaScript承诺来生成 x={a:5} 例如:这在JavaScript承诺中可能吗?,javascript,promise,synchronization,Javascript,Promise,Synchronization,我正在尝试使用JavaScript承诺来生成 x={a:5} 例如: new Promise(resolve => { setTimeout(() => { resolve(5); }, 2000) }).then(v => { x = { a: v }; console.log(x); }) 但是,我想了解如何使用此代码实现同样的效果: x = { a: new Promise(resolve
new Promise(resolve => {
setTimeout(() => {
resolve(5);
}, 2000)
}).then(v => {
x = {
a: v
};
console.log(x);
})
但是,我想了解如何使用此代码实现同样的效果:
x = {
a: new Promise(resolve => {
setTimeout(() => {
resolve(5);
}, 2000)
})
};
请导游。我将负债累累。不,承诺是不可能的 看来你在承诺是什么或如何实现的问题上被误导了。承诺是一个最终将包含某个未来值的对象,它包含一个方法
。然后(fn)
,通过该方法,您可以注册一个回调,以便在未来值可用时或在尝试获取该值时出错时调用
但是,承诺并没有“变成”未来的价值——它始终是承诺的对象。所以,你不能以你的方式做你所展示的事情。承诺不会变成他们的坚定价值观。它们将解析的值存储在内部,以便在值可用时(或在尝试获取值时出现错误时)通知注册的.then()
处理程序
由于不清楚您实际要解决的实际问题是什么,我不确定推荐什么代码,但很明显,您不能做您试图做的事情
我想学习如何使用此代码实现相同的功能
这是根本不可能的代码。承诺并非如此
您可以创建一个函数,当承诺得到解决时,该函数最终将
x.a
属性设置为5
,尽管我不确定为什么不直接在承诺的.then()
处理程序中进行编码(正如我所说,我不知道您在这里试图解决的是什么实际问题)
不,承诺是不可能的 看来你在承诺是什么或如何实现的问题上被误导了。承诺是一个最终将包含某个未来值的对象,它包含一个方法
。然后(fn)
,通过该方法,您可以注册一个回调,以便在未来值可用时或在尝试获取该值时出错时调用
但是,承诺并没有“变成”未来的价值——它始终是承诺的对象。所以,你不能以你的方式做你所展示的事情。承诺不会变成他们的坚定价值观。它们将解析的值存储在内部,以便在值可用时(或在尝试获取值时出现错误时)通知注册的.then()
处理程序
由于不清楚您实际要解决的实际问题是什么,我不确定推荐什么代码,但很明显,您不能做您试图做的事情
我想学习如何使用此代码实现相同的功能
这是根本不可能的代码。承诺并非如此
您可以创建一个函数,当承诺得到解决时,该函数最终将
x.a
属性设置为5
,尽管我不确定为什么不直接在承诺的.then()
处理程序中进行编码(正如我所说,我不知道您在这里试图解决的是什么实际问题)
您可能正在寻找/wait组合。在您的代码中,
a
属性是承诺对象,而不是承诺的解析值。我想了解如何使用此代码实现相同的承诺
根本不可能-承诺就是承诺,它永远不会更改为任何其他内容。。。像5
。。。它是5
,不能变成“Hello world”
您可能正在寻找/wait组合。在您的代码中,a
属性是承诺对象,而不是承诺的解析值。我想了解如何使用此代码实现相同的承诺
根本不可能-承诺就是承诺,它永远不会更改为任何其他内容。。。像5
。。。它是5
,不能变成“Hello world”
// set obj[prop] to the resolved value of the promise p
function setProp(p, obj, prop) {
return p.then(function(val) {
obj[prop] = val;
});
}
let x = {};
let p = new Promise(resolve => {
setTimeout(() => {
resolve(5);
}, 2000);
});
setProp(p, x, "a").then(function() {
console.log(x);
});