由于hainguyen指出,Ajax是典型的异步的代码之后将运行,直到请求完成,此时执行内部函数。所以外部控制台日志几乎肯定会在您的代码中首先运行。虽然hainguyen指出有办法解决这个问题,但大多数人建议不要这样做。 Ajax是需要时间的,因此你的代码结构应该反映这一点。如果您发现自己希望在处理ajax请求时运行代码,则可能不喜欢同步结构。我的“我无人等待”日志显示了异步方法的强大功能,因为该逻辑将快速运行,而您通常会等待请求而无法执行任何操作。
而不是让它同步为什么不使用函数来处理异步行为更好,就像在内部控制台登录函数后包装你想要运行的任何东西一样:(我称之为outside())这将输出“inside ajax” ,“外部ajax”。这样你就可以在你的ajax return上创建依赖关系,并且仍然可以选择在此期间运行的东西。
import React from 'react';
import request from 'superagent';
const UserItems =() => {
request.get('http://localhost:4000/user/1/items.json')
.then((res, err) => {
if (err) {
console.log("errror found");
}
var data = JSON.parse(res.text);
console.log("inside ajax");
console.log(data);
outside();
});
function outside(){
console.log("outside ajax");
console.log(data);
}
console.log("I wait for no one, run me as quick as possible!");
};
export default UserItems;