Python async for example
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import asyncio
class AsyncIteratorWrapper:
def __init__(self, obj):
self._it = iter(obj)
async def __aiter__(self):
return self
async def __anext__(self):
try:
value = next(self._it)
except StopIteration:
raise StopAsyncIteration
return value
class AsyncIteratorWrapper2:
def __init__(self, obj):
self._it = iter(obj)
def __aiter__(self):
return self
async def __anext__(self):
try:
value = next(self._it)
except StopIteration:
raise StopAsyncIteration
return value
async def show():
async for letter in AsyncIteratorWrapper("abc"):
print(letter)
async def show2():
i = AsyncIteratorWrapper2("abc").__aiter__()
while True:
try:
val = await i.__anext__()
except StopAsyncIteration:
break
else:
print(val)
loop = asyncio.get_event_loop()
loop.run_until_complete(show())
loop.run_until_complete(show2())
loop.close()