Truncate continued fractions
JavaScript (ES6),  72 68   67 bytes
Expects (max_denominator)(seq). Returns [numerator, denominator].

m=&gt;g=([v,...a],n=0,d=1,N=1,D=0)=&gt;(d+=D*v)&lt;=m?g(a,N,D,N*v+n,d):[N,D]

Try it online!
Commented
m =&gt;             // outer function taking m = maximum denominator
g = (            // inner recursive function taking:
  [v,            //   v = next term from the continued fraction
      ...a],     //   a[] = remaining terms
  n = 0,         //   n = previous numerator
  d = 1,         //   d = previous denominator
  N = 1,         //   N = current numerator
  D = 0          //   D = current denominator
) =&gt;             //
  (d += D * v)   // we compute the new denominator d = D * v + d
                 // this results in NaN if v is undefined,
                 // which forces the comparison to fail
  &lt;= m ?         // if it's less than or equal to m:
    g(           //   do a recursive call:
      a,         //     pass the remaining terms of the continued fraction
      N, D,      //     pass the current numerator and denominator
      N * v + n, //     pass the new numerator
      d          //     pass the new denominator
    )            //   end of recursive call
  :              // else:
    [N, D]       //   we're done: return [N, D]