flutter Future

  • Future then(FutureOr onValue(T value), {Function onError});

then方法返回的future就是onValue或者onError返回的future,如果都没有反回,则then方法返回的future以null值完成(then返回的future方法会执行then处理方法)。如果onValue或者onError方法中发生其他错误,则then返回的future以发生的错误完成(then返回的future方法会执行error处理方法)。如果then方法没有执行,则返回的future以this的error完成(执行的是error处理方法)。
如果this的then方法内有传递onError参数,则this的error会传递到onError方法而不是catchError。

  • Future catchError(Function onError, {bool test(Object error)});
    如果没执行onError方法,则返回future就以this(catchError方法的future)结果完成,如果执行了onError方法,则返回的future就是onError方法的return,如果没有return,则返回的future以null完成(执行then方法)。如果onError方法中发生其他错误,则catchError返回的future以发生的错误完成(catchError返回的future方法会执行error处理方法)

  • Future whenComplete(FutureOr action());
    如果action方法中发生其他错误,则whenComplete返回的future以发生的错误完成(whenComplete返回的future方法会执行error处理方法)。如果action正常执行,则whenComplete返回的future就是this
    等价于:

   *     Future whenComplete(action()) {
   *       return this.then((v) {
   *         var f2 = action();
   *         if (f2 is Future) return f2.then((_) => v);
   *         return v
   *       }, onError: (e) {
   *         var f2 = action();
   *         if (f2 is Future) return f2.then((_) { throw e; });
   *         throw e;
   *       });
   *     }

你可能感兴趣的:(flutter Future)