Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript,promise.then()函数首先执行_Javascript_Promise - Fatal编程技术网

Javascript,promise.then()函数首先执行

Javascript,promise.then()函数首先执行,javascript,promise,Javascript,Promise,我为忽略了一些基本的东西而提前道歉,但我无法理解以下问题 我想在服务器上创建一个用户,随后显示所有用户(包括新用户)。为了简化事情,我在“then”子句中添加了一个警告。问题是 警报在服务器上的“CreateUser”完成之前出现。根据文件,“然后”在承诺完成时执行。 为什么在我的电脑上是相反的 function createUser(newUser) { userService.create(newUser) // Post creating new user .

我为忽略了一些基本的东西而提前道歉,但我无法理解以下问题

我想在服务器上创建一个用户,随后显示所有用户(包括新用户)。为了简化事情,我在“then”子句中添加了一个警告。问题是 警报在服务器上的“CreateUser”完成之前出现。根据文件,“然后”在承诺完成时执行。 为什么在我的电脑上是相反的

function createUser(newUser) {   
    userService.create(newUser) // Post creating new user
        .then(      
        alert('Why do I come up before completion of the  userService.create() function  ?')
        );  
}
这是userService.create()函数:

function create(user) {
//    alert(user);
    const requestOptions = {
        method: 'POST',
        headers: { ...authHeader(), 'Content-Type': 'application/json' },
        body: user
    };

    return fetch('/Client/Create', requestOptions).then(handleResponse, handleError);
}
HandlerResponse:

function handleResponse(response) {
    return new Promise((resolve, reject) => {

....
手柄错误:

function handleError(error) {
    return Promise.reject(error && error.message);
}
非常感谢。

改变

function createUser(newUser) {   
    userService.create(newUser) // Post creating new user
        .then(      
        alert('Why do I come up before completion of the  userService.create() function  ?')
        );  
}
致:

改变

function createUser(newUser) {   
    userService.create(newUser) // Post creating new user
        .then(      
        alert('Why do I come up before completion of the  userService.create() function  ?')
        );  
}
致:


那么
需要传递一个函数,所以请执行以下操作:

userService.create(newUser).then(() => {
    alert('Why do I come up before completion of the  userService.create() function  ?')
});

需要传递函数,因此请执行以下操作:

userService.create(newUser).then(() => {
    alert('Why do I come up before completion of the  userService.create() function  ?')
});

如果您直接调用alert,则需要在then方法中放置一个调用alert的functin
。然后(()=>{alert('…')})
@DanielKrom就是这样!非常感谢你。EC6语法,甚至比使用函数更优雅。你直接调用alert,你需要在then方法中放入一个调用alert的functin
。然后(()=>{alert(“…”)})
@DanielKrom就是这样!非常感谢你。EC6语法,甚至比使用函数更优雅。你是个英雄。我在胡说八道,你是个英雄。我在拔头发。