异步 n 承诺从快捷方式更改
Async n promise change from shortcut
我在一个示例中找到了这段代码,它都在快捷方式中:
async function test1(){
const p = await new Promise(resolve => setTimeout(resolve, 2000)).then(()=>'test1');
console.log('Completed test1');
return p;
}
我想删除 setTimeout 并将其放在非快捷方式中,这样我就可以向其添加多个命令并执行除超时之外的其他操作...
例如:
async function test1(){
const p = await new Promise(resolve => setTimeout(resolve) => {
// line here
// another one etc
}
如何更改上面的代码?
async function test1(){
const p = await new Promise(resolve => setTimeout(resolve, 2000)).then(()=>'test1');
console.log('Completed test1');
return p;
}
我想你还没有完全理解这段代码。 setTimeout
不是捷径。 new Promise(resolve => setTimeout(resolve, 2000))
用于创建将在 2000 毫秒后解决的承诺。您可以将其视为 API 调用,它将在 2000 毫秒后调用回调
让我们破解这段代码:
// A function test1 which is defined async sow you can use await inside it
async function test1(){
// You can await for promises.
// As explained await new Promise(resolve => setTimeout(resolve, 2000))
// is just a promise resolving after 2000ms
const p = await new Promise(resolve => setTimeout(resolve, 2000))
// .then block will run after promise gets resolved
// p will bcome test1
.then(()=>'test1');
console.log('Completed test1');
return p;
}
如果您想有条件地解决承诺并进行一些计算,您可以在 setTimeout 函数中进行:
await new Promise(resolve =>
setTimeout(()=>{
if('Some consition'){
resolve('some value')
}
else{
resolve('some other value')
}
}, 2000)
)
我在一个示例中找到了这段代码,它都在快捷方式中:
async function test1(){
const p = await new Promise(resolve => setTimeout(resolve, 2000)).then(()=>'test1');
console.log('Completed test1');
return p;
}
我想删除 setTimeout 并将其放在非快捷方式中,这样我就可以向其添加多个命令并执行除超时之外的其他操作...
例如:
async function test1(){
const p = await new Promise(resolve => setTimeout(resolve) => {
// line here
// another one etc
}
如何更改上面的代码?
async function test1(){
const p = await new Promise(resolve => setTimeout(resolve, 2000)).then(()=>'test1');
console.log('Completed test1');
return p;
}
我想你还没有完全理解这段代码。 setTimeout
不是捷径。 new Promise(resolve => setTimeout(resolve, 2000))
用于创建将在 2000 毫秒后解决的承诺。您可以将其视为 API 调用,它将在 2000 毫秒后调用回调
让我们破解这段代码:
// A function test1 which is defined async sow you can use await inside it
async function test1(){
// You can await for promises.
// As explained await new Promise(resolve => setTimeout(resolve, 2000))
// is just a promise resolving after 2000ms
const p = await new Promise(resolve => setTimeout(resolve, 2000))
// .then block will run after promise gets resolved
// p will bcome test1
.then(()=>'test1');
console.log('Completed test1');
return p;
}
如果您想有条件地解决承诺并进行一些计算,您可以在 setTimeout 函数中进行:
await new Promise(resolve =>
setTimeout(()=>{
if('Some consition'){
resolve('some value')
}
else{
resolve('some other value')
}
}, 2000)
)