javascript - Est-il possible d'utiliser une méthode asynchrone comme celle-ci?
PHP中文网
PHP中文网 2017-06-30 09:58:02
0
3
692

J'ai récemment lu quelques articles et j'ai commencé à utiliser async pour traiter du code asynchrone. C'est beaucoup plus facile à utiliser que les rappels asynchrones précédents. Cependant, j'ai trouvé qu'il semble y avoir un problème avec ma méthode d'écriture et tout le monde peut le faire. aidez-moi à le corriger....

(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('注册成功');
 })();
    

Oublier la logique de l'écriture, c'est la méthode d'appel, n'est-ce pas ? Ça fait toujours bizarre d'avoir besoin d'écrire une fonction d'exécution immédiate...

PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(3)
伊谢尔伦

Si la fonction anonyme n'est pas déclarée asynchrone, cette façon d'écrire vous semblera étrange. Puisque wait est utilisé dans cette fonction anonyme pour appeler une autre fonction, elle doit être déclarée asynchrone, sinon une erreur de compilation sera signalée. Il peut être exécuté immédiatement tel qu’écrit par l’affiche originale. Cependant, il est plus recommandé de déclarer un nom de fonction pour la fonction anonyme et d'appeler la fonction de manière asynchrone.

迷茫

Utilisez try catch plus souvent. De plus, je ne sais pas pourquoi vous incluez une fonction d'exécution immédiate ici. Définissez un nom pour la fonction asynchrone. Vous pourrez personnaliser l'appel plus tard

刘奇

En général, ce n’est pas un problème de l’utiliser de cette façon. Lorsque la fonction asynchrone est appelée avec wait, elle revient immédiatement de la fonction principale. Lorsque la fonction asynchrone se termine, elle continue d'exécuter la fonction principale.
Si wait n'est pas utilisé, la fonction principale sera exécutée. Dans le même temps, la fonction asynchrone sera exécutée de manière asynchrone.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal