如何使用co.wrap与发电机

时间:2018-05-17 02:14:19

标签: javascript generator co

from django.contrib import admin
from django.urls import path, include
from django.views import static

urlpatterns = [
    path('admin/', admin.site.urls),
    path('catalog/', include('catalog.urls'), ),
    path('static/', static.serve,
         {
             'document_root': 'C:/Users/USER1/PycharmProjects/untitled13/static'
         }),
]

预期结果是     FUNC1     FUNC2     FUNC3     端

但它并没有表明我的意图。

它正在显示     func1的

如何修复代码以输出预期结果

1 个答案:

答案 0 :(得分:0)

两个问题:

  1. 您的功能无法返回控制权。如果你想使用thunks(documentation建议反对),你需要实际接受并调用回调:

    const func1 = function(cb){
      setTimeout(()=>{
        console.log('func1');
    
        return cb();
      },2000);
    };
    

    但是,使用promises更好:

    const func2 = function(){
      return new Promise((resolve) => {
        setTimeout(()=>{
          console.log('func2');
    
          return resolve();
        },2000);
      });
    };
    
  2. 如果你使用promises,你需要在产生它时调用它:

    yield func2();
    

    如果它是一个thunk,你只能yield一个函数而不调用它。