示例#1
0
 private void YieldNext()
 {
     if (this.State != GeneratorState.Closed)
     {
         try {
             this.State = GeneratorState.Running;
             if (TryYieldNext(out EcmaValue result))
             {
                 Promise.Resolve(result, ResolveFromYield, RejectFromYield);
                 return;
             }
         } catch (GeneratorClosedException ex) {
             Resolve(ex.ReturnValue, true);
         } catch (Exception ex) {
             Reject(EcmaValueUtility.GetValueFromException(ex));
         }
         if (this.State != GeneratorState.AwaitingReturn)
         {
             Close();
         }
     }
 }
示例#2
0
 private void AwaitReturn(EcmaValue value, bool resume)
 {
     this.State = GeneratorState.AwaitingReturn;
     Promise.Resolve(value, resume ? (PromiseCallback)ResumeFromReturn : ResolveFromReturn, RejectFromYield);
 }