将期货与Dart结合使用
为什么打印结果总是返回asd将期货与Dart结合使用,dart,Dart,为什么打印结果总是返回asd var jerl = "asd"; HttpRequest.request('Foo', method: "GET", requestHeaders: {"Authorization": "Secret"}).then((x) => x.responseText).then((y) => jerl = y); print(jerl); 异步代码只是被安排在以后执行,同步代码继续执行而不等待异步代码。你传递给未来的
var jerl = "asd";
HttpRequest.request('Foo',
method: "GET",
requestHeaders: {"Authorization": "Secret"}).then((x) => x.responseText).then((y) => jerl = y);
print(jerl);
异步代码只是被安排在以后执行,同步代码继续执行而不等待异步代码。你传递给未来的方法。然后。。。在计划的异步代码完成时执行。在StackOverflow上,您会发现许多这样的问题和示例标记为[:dart async:] 如果您希望在异步代码完成时执行代码,则需要像处理其他代码一样将其链接起来
var jerl = "asd";
HttpRequest.request('Foo',
method: "GET",
/* return */ requestHeaders: {"Authorization": "Secret"})
.then((response) {
var jer1 = x.responseText;
print(jerl);
});
您可以使用async/await特性使代码看起来更像同步代码
Future someMethod() async { // <== added `Future` and `async`
var jerl = "asd";
var response = await HttpRequest.request('Foo', // <== added `await`
method: "GET",
requestHeaders: {"Authorization": "Secret"}).then((x) =>
print(response.text);
}
异步是有传染性的。无法从异步执行返回到同步执行。如果您的代码调用任何异步方法或函数,并且您需要代码进一步向下以等待异步结果,那么您还需要在调用方法中使用.then或使用async/await链接以下所有代码。为了让这一切顺利进行,你还需要把未来还给打电话的人,这样他就可以打电话了
使用async/await,您不需要显式返回future
async/await并不像上面提到的那样使异步代码同步,它只是使它看起来更像同步代码。基本行为与then相同。异步代码只是计划稍后执行,同步代码继续执行而不等待异步代码。你传递给未来的方法。然后。。。在计划的异步代码完成时执行。在StackOverflow上,您会发现许多这样的问题和示例标记为[:dart async:] 如果您希望在异步代码完成时执行代码,则需要像处理其他代码一样将其链接起来
var jerl = "asd";
HttpRequest.request('Foo',
method: "GET",
/* return */ requestHeaders: {"Authorization": "Secret"})
.then((response) {
var jer1 = x.responseText;
print(jerl);
});
您可以使用async/await特性使代码看起来更像同步代码
Future someMethod() async { // <== added `Future` and `async`
var jerl = "asd";
var response = await HttpRequest.request('Foo', // <== added `await`
method: "GET",
requestHeaders: {"Authorization": "Secret"}).then((x) =>
print(response.text);
}
异步是有传染性的。无法从异步执行返回到同步执行。如果您的代码调用任何异步方法或函数,并且您需要代码进一步向下以等待异步结果,那么您还需要在调用方法中使用.then或使用async/await链接以下所有代码。为了让这一切顺利进行,你还需要把未来还给打电话的人,这样他就可以打电话了
使用async/await,您不需要显式返回future
async/await并不像上面提到的那样使异步代码同步,它只是使它看起来更像同步代码。基本行为与当时相同。这看起来不像angularjs代码……必须是潜意识添加的这看起来不像angularjs代码……必须是潜意识添加的