如何保证promise中的代码首先在Javascript中运行?
实际输出是2,然后是1。有没有办法保证1,然后保证2。想象一下如何保证promise中的代码首先在Javascript中运行?,javascript,Javascript,实际输出是2,然后是1。有没有办法保证1,然后保证2。想象一下f是一个来自其他人的函数,或者是一个我几乎无法控制的库 我真正的应用是我想保证我的代码在函数中的承诺中的代码运行之后运行。所以。。。您在标题中提到的承诺在哪里?想象f是一个来自其他人的函数,或者是一个我几乎无法控制的库。-如果它返回一个承诺,那么解决方案很简单。。。您的示例很奇怪,超时回调将以任何方式在下一个周期中运行。如果要在超时后运行函数,请将其作为回调和调用传递。这是我唯一能说的,看看你的例子,把设置超时当作承诺。他们没有给我任
f
是一个来自其他人的函数,或者是一个我几乎无法控制的库
我真正的应用是我想保证我的代码在函数中的承诺中的代码运行之后运行。所以。。。您在标题中提到的承诺在哪里?
想象f是一个来自其他人的函数,或者是一个我几乎无法控制的库。
-如果它返回一个承诺,那么解决方案很简单。。。您的示例很奇怪,超时回调将以任何方式在下一个周期中运行。如果要在超时后运行函数,请将其作为回调和调用传递。这是我唯一能说的,看看你的例子,把设置超时当作承诺。他们没有给我任何承诺,他们的代码在函数中的承诺回调中运行。如果我不能更改f呢?这是什么意思?你是说你需要维护setTimeout函数?我已经更新了代码。setTimeout只是为了模拟promise回调中的代码运行。fetch也是异步的,因此它的行为也会相同
function f() {
setTimeout(()=> {
console.log(1);
});
// real situation
// fetch(...).then(()=>{
// console.log(1);
// });
}
function g() {
console.log(2);
}
f();
g();
function f() {
return new Promise(resolve => {
resolve(1)
}).then(value=>{
console.log(value)
})
}
function g() {
console.log(2);
}
const run = async () => {
await f();
g();
}
run();