javascript - Adakah boleh menggunakan async seperti ini?
PHP中文网
PHP中文网 2017-06-30 09:58:02
0
3
691

Saya baru-baru ini membaca beberapa artikel dan mula menggunakan async untuk memproses kod asynchronous. Ia adalah lebih mudah untuk digunakan berbanding panggilan balik tak segerak yang sebelumnya, bagaimanapun, saya mendapati bahawa terdapat masalah dengan kaedah penulisan saya dan semua orang boleh tolong saya betulkan....

(async function(){
    let username = req.body.username;
    let password = req.body.password;
    // 查找当前用户名是否已经注册(返回值为数组,没有结果则为空数组,长度为0)
    let userIsRegisted = await user.findByName(username);
    // 因为用户名的唯一性,可以使用==1或者!=0两种方式判断
    if(userIsRegisted.length!=0){
        res.send('当前用户已注册');
        return;
    }
    // 密码加密
    let hashPassword = crypto.createHash('sha1').update(password).digest('hex');
    let obj = {
        username:username,
        password:hashPassword
    }
    // 添加新用户
    await user.create(obj);
    // 设置session
    req.session.username=username;
    req.session.loged = true;
    res.send('注册成功');
 })();
    

Terlupa logik menulis, inilah kaedah panggilan, kan?

PHP中文网
PHP中文网

认证高级PHP讲师

membalas semua(3)
伊谢尔伦

Jika fungsi tanpa nama tidak diisytiharkan sebagai async, cara penulisan ini akan terasa pelik. Memandangkan await digunakan dalam fungsi tanpa nama ini untuk memanggil fungsi lain, ia mesti diisytiharkan sebagai tidak segerak, jika tidak, ralat kompilasi akan dilaporkan. Ia boleh dilaksanakan serta-merta seperti yang ditulis oleh poster asal. Walau bagaimanapun, adalah lebih disyorkan untuk mengisytiharkan nama fungsi untuk fungsi tanpa nama dan memanggil fungsi itu secara tidak segerak.

迷茫

Gunakan try catch lebih kerap Selain itu, saya tidak pasti mengapa anda menyertakan fungsi pelaksanaan segera di sini. Tentukan nama untuk fungsi async. Anda boleh menyesuaikan panggilan kemudian

刘奇

Secara amnya, tiada masalah untuk menggunakannya dengan cara ini. Apabila fungsi async dipanggil dengan await, ia kembali serta-merta daripada fungsi utama Apabila fungsi async tamat, ia terus melaksanakan fungsi utama.
Jika menunggu tidak digunakan, fungsi utama akan dilaksanakan. Pada masa yang sama, fungsi async akan dilaksanakan secara tak segerak.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan