2017-10-13 6 views
1

async await을 사용할 때 콜백은 어떻게 지정합니까?</p> <p><a href="https://node-postgres.com/features/transactions" rel="nofollow noreferrer">https://node-postgres.com/features/transactions</a></p> <p>그러나 다음 코드 예제 : 난에서 트랜잭션을 사용하는 방법을 찾고 있었다

const { Pool } = require('pg') 
const pool = new Pool() 

(async() => { 
    // note: we don't try/catch this because if connecting throws an exception 
    // we don't need to dispose of the client (it will be undefined) 
    const client = await pool.connect() 

    try { 
    await client.query('BEGIN') 
    const { rows } = await client.query('INSERT INTO users(name) VALUES($1) RETURNING id', ['brianc']) 

    const insertPhotoText = 'INSERT INTO photos(user_id, photo_url) VALUES ($1, $2)' 
    const insertPhotoValues = [res.rows[0].id, 's3.bucket.foo'] 
    await client.query(insertPhotoText, insertPhotoValues) 
    await client.query('COMMIT') 
    } catch (e) { 
    await client.query('ROLLBACK') 
    throw e 
    } finally { 
    client.release() 
    } 
})().catch(e => console.error(e.stack)) 

이 기능이 바로 실행 것으로 보인다. 또한 콜백을 지정하는 방법이없는 것처럼 보입니다. 이 함수로 "....) ((비동기를"에서 전체 블록을 배치하는 의미를 다음 try 블록이 끝나기 전에 최종 성명에서, 추가합니다 :

await callbackfunction(); 

합니까을 그 ??.. 의미는 무엇 콜백 함수를 추가 할 수있는 더 좋은 방법이 될 것입니다

+1

약속을 사용하고 있다면 콜백이 필요하지 않습니다 ('async/await'도 배후에서 사용합니다). – robertklep

+0

'.catch (...'? – DavidDomain

+0

@DavidDomain'then' 호출의 의미가 "callback"호출의 의미 (첫 번째 인수는 가능한 오류를 나타냄)와 다르기 전에'.then (callback)'을 추가 할 수 없습니까? (v => 콜백 (null, v)) catch (콜백)' – robertklep

답변

2

AWAIT의 요점은 당신이 콜백을 사용하지 않는다는 것입니다 그것은 약속 해결의 결과를 반환하지 않고

기다리고 :

do_something_asyc.then(function (data) { alert(data); }); 

기다리고 있습니다 :

var data = await do_something_asyc(); 
alert(data);