Javascript/JQuery/Output 使用 JQUERY.get 调用端点时,promise 和 await 之间的输出不同

Javascript/JQuery/Output Different output between promise and await when calling endpoint using JQUERY.get

我正在使用 JQuery 和 promises 从模拟端点获取一些模拟数据。

只是为了它,我想尝试让它与 async/await 一起工作。

我想我设法找到了一些有效的代码,尽管我在控制台中没有得到相同的输出(在 chrome 浏览器中)。

这是两段代码:

import $ from 'jquery';

let myPromise = $.get("http://5e2f41529c29c900145db22d.mockapi.io/test/users");

myPromise
    .then(
        (data) => {
            console.log('Success promises: ', data);
        }
    )
    .catch(
        (error) => {
            console.log('Error : ', error.responseText);
        }
    );

// same as above but with async/await

import $ from 'jquery';


let getUsersFromEndPoint = async function (){
    try {
        let users = await $.get("http://5e2f41529c29c900145db22d.mockapi.io/test/users");
        console.log('Success Async: ' + users);
    } catch (error) {
        console.log('Error : ', error.responseText);
    }
};

getUsersFromEndPoint();

他们输出:

我不确定有什么区别。 有谁知道为什么我得到不同的输出?以及他们俩 "mean" ?

谢谢!

基于 promise 的代码和 async/await 都是正确的,并且做同样的事情,除了一个小的(因此难以发现)差异。

基于 promise 版本的记录器代码:

console.log('Success promises: ', data);

...按您的预期记录结果。

但是,在异步函数中,console.log 包含一个 + 运算符,它将其第二个操作数(数据)转换为字符串,因此所有对象都转换为 "[object Object]":

console.log('Success Async: ' + users);

将数据作为 console.log 的第二个参数传递(就像您对 promise 版本所做的那样),您将获得预期的结果。