コード例 #1
0
        /// <summary>
        /// Resolves any pending promises queued in the execution scope.
        /// </summary>
        /// <remarks>
        /// Pending promises are resolved when the execution scope is
        /// disposed, but can be invoked directly to resolve pending values.
        /// </remarks>
        public void ResolvePendingPromises()
        {
            if (m_promiseTaskQueue == null || m_promiseTaskQueue.Count <= 0)
            {
                return;
            }

            var args = new IntPtr[] { m_context.Undefined.Handle.DangerousGetHandle() };

            while (m_promiseTaskQueue.Count > 0)
            {
                var promise = m_promiseTaskQueue.Dequeue();
                if (promise == null || promise.IsDisposed)
                {
                    continue;
                }
                try
                {
                    //All results from this are undefined.
                    m_context.Engine.JsCallFunction(promise.Handle, args, (ushort)args.Length);
                }
                finally
                {
                    m_context.Engine.JsRelease(promise.Handle);
                    promise.Dispose();
                }
            }
        }