Javascript 异步n承诺从快捷方式更改

Javascript 异步n承诺从快捷方式更改,javascript,async-await,es6-promise,Javascript,Async Await,Es6 Promise,我在一个示例中找到了以下代码,它们都在快捷方式中: 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, 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;
}
我想你还没有完全理解这个代码<代码>设置超时不是快捷方式
newpromise(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 await,因为这里使用setTimeout只是为了模拟Promise几乎完美的功能,谢谢,但是如果我不想超时,而是想使用其他功能呢?例如resolve=>{//dosomethine here}这是完全错误的。promissions/async/await的思想是使用它们来等待解决。在这种情况下,使用setTimeout是错误的。我看到这一点的唯一方式是,如果这是一个模拟承诺执行2秒的示例。@我在这里编写的setTimeout宏就是模拟承诺,比如flow
,而不是使用其他承诺
->
等待其他承诺执行其他承诺()