gpt4 book ai didi

javascript - 异步/等待返回结果不 promise

转载 作者:行者123 更新时间:2023-11-30 06:54:57 28 4
gpt4 key购买 nike

我对 async/await 很困惑。我一直在阅读 s/o 上的答案,但我不明白 async/await 是否真的按照我的意愿行事。

我正在尝试以同步方式返回异步调用的结果,也许这就是我失败的原因,也许它不是为此而设计的?我不想返回回调(或 promise ),而是返回回调的结果。

这是我一直在努力做的事情

 let namespace = {};

namespace.Test = class{

constructor(){

}


async get(){
let response = await this._load();
let data = await response;
console.log(data); //Logs my data but return Promise instead
return data;
}

_load(){
let promise = new Promise((resolve, reject) => {
fetch('https://jsonplaceholder.typicode.com/todos/1')
.then(function(response){
resolve(response.json());
}).catch(error => reject(error));
});
return promise;
}

}


//The goal is to figure out if I can have that
let myTest = new namespace.Test();
//Here I want data NOT a promise
let res = myTest.get();

console.log(res); //logs a Promise but I want what has been resolved instead

我认为在 _load 中解析 promise,然后在 get 中使用 await 可以吗?

最佳答案

I'm trying to return the result of an async call in a synchronous way

那是不可能的。异步函数同步返回的唯一东西是 promise (所有异步函数都按设计返回 promise )。异步函数使使用 promise 的语法更容易,但它们仍然是异步的。

当您在异步函数中使用 await 时,这会延迟返回的 promise 解析所需的时间。这很好:如果任何代码正在等待那个 promise ,它会等待更长时间,因此会推迟到你的异步函数完全完成。但是等待 promise 不是自动的;您要么需要使用 promise 的 .then 方法,要么需要在 async 函数中使用 await 关键字。

let resPromise = myTest.get();
resPromise.then(res => console.log(res));
async someFunction() {
const res = await myTest.get();
console.log(res);
}

关于javascript - 异步/等待返回结果不 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56446167/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com