如何从HttpRequest获取值?

时间:2013-05-30 21:15:49

标签: dart

我正在学习Dart而且我遇到了障碍。我非常想从json字符串处理函数返回一个值,所以我可以在main()中使用该值。 (我正在尝试设置一些顶级变量以与单向数据绑定一起使用html模板。)我正在使用HttpRequest.getString.then调用来启动处理。但是HttpRequest不喜欢被分配给变量,所以我不确定如何从中获取任何东西。

processString(String jsonString) {
  // Create a map of relevant data
  return myMap;
}

void main() {
  HttpRequest.getString(url).then(processString);
  // Do something with the processed result!
}

我想我的问题是如何从HttpRequest调用的函数中获取值?

1 个答案:

答案 0 :(得分:2)

您正在尝试执行Dart异步模型不支持的操作。您必须处理异步请求的结果:

  1. processString()
  2. 在另一个来自processString()
  3. 的函数中
  4. 在传递给then()的匿名函数中。
  5. 或类似的东西。您无法所做的是从main()进一步向下访问

    processString(String jsonString) {
      // Create a map of relevant data
      // Do something with the processed result!
    }
    
    void main() {
      HttpRequest.getString(url).then(processString);
      // Any code here can never access the result of the HttpRequest
    }
    

    您可能更喜欢:

    processString(String jsonString) {
      // Create a map of relevant data
      return myMap;
    }
    
    void main() {
      HttpRequest.getString(url).then((resp) {
        map = processString(resp);
        // Do something with the processed result!
      });
      // Any code here can never access the result of the HttpRequest
    }