我正在尝试重做当前使用回调使用async
,await
的代码。唯一的是,在当前设置中,我对应该如何编写感到有些困惑。
设置是:
clicker
功能的按钮clicker
函数触发ajax
函数ajax
函数执行fetch
请求clicker
函数目前,我从undefined
函数中获得了ajax
,有人可以帮忙指出问题所在吗?
var ajax = function() {
fetch('https://jsonplaceholder.typicode.com/todos/1')
.then(response => response.json())
.then(json => { console.log('ajax function', json); return json; })
.catch(error => console.log(error))
};
var clicker = async function() {
var a = await ajax();
console.log('clicker function', a);
};
<div onclick="clicker(event, this);">
Test Me
</div>
答案 0 :(得分:2)
尝试
var ajax = async function() {
try {
let response = await fetch('https://jsonplaceholder.typicode.com/todos/1')
let json = await response.json();
console.log('ajax function', json)
return json;
} catch (error) {
console.log(error)
};
};
var clicker = async function() {
var a = await ajax();
console.log('clicker function', a);
};
.btn { border-radius: 5px; background: #00ff00; width: 80px; padding: 10px;cursor: pointer; }
<div class="btn" onclick="clicker(event, this);">
Test Me
</div>
答案 1 :(得分:0)
您只能await
个承诺。
ajax()
的返回值为undefined
,因为它没有return语句。
fetch
返回一个承诺,但您不返回。
添加一个返回语句:
return fetch('https://jsonplaceholder.typicode.com/todos/1')