co 라이브러리의 소스 코드를 살펴보세요. co 라이브러리에서 오류가 보고되는 이유는 위에서 언급한 대로 undefine가 반환됩니다. 구체적인 오류 코드는 다음과 같습니다. co库的源码就好,报错是co库报出来的,原因是因为楼上说的返回了undefined,具体报错代码如下:
if (value && isPromise(value))
return value.then(onFulfilled, onRejected);
return onRejected(new TypeError('You may only yield a function, promise, generator, array, or object, '
+ 'but the following object was passed: "' + String(ret.value) + '"'));
isPromise는 Promise인지 감지합니다. co 라이브러리는 먼저 yield를 Promise, 자세한 내용은 toPromise 함수를 참조하세요. 🎜
으아아아
🎜입력이 정의되지 않음이므로 결국 toPromise는 정의되지 않음을 반환하고 감지는 Promise가 아니므로 오류가 발생합니다. 🎜
🎜1,2,3이 출력되지 않는 이유는 yield 뒤에 있는 관계 때문입니다. yield는 함수를 매개변수로 받아들여야 합니다. 그리고 이 함수는 실행되어야 하므로 yield 뒤에는 일반적으로 비동기 작업이 옵니다. 이 함수는 콜백 함수이므로 다음과 같이 변경하면 됩니다. 🎜
으아아아
Yours
yield
后面跟的不是are
这个函数,而是are
执行后的返回值。其实它等于
yield undefined
, 이것이 오류의 원인입니다.으아악
일반 기능은 지원되지 않습니다
co
라이브러리의 소스 코드를 살펴보세요.co
라이브러리에서 오류가 보고되는 이유는 위에서 언급한 대로undefine가 반환됩니다. 구체적인 오류 코드는 다음과 같습니다.
co
库的源码就好,报错是co
库报出来的,原因是因为楼上说的返回了undefined
,具体报错代码如下:isPromise
检测是否为Promise
,co
库先尝试将yield
后转换为Promise
,具体参见toPromise
函数:传入的是
undefined
,所以最终toPromise
返回了undefined
,检测不是Promise
,所以就抛出了错误。至于为什么没有输出
1,2,3
的原因,是因为yield
后面的关系,yield
后面是要接受函数作为参数,并且要执行这个函数的,所以yield
으아아아isPromise
는Promise
인지 감지합니다.co
라이브러리는 먼저yield
를Promise, 자세한 내용은
toPromise
함수를 참조하세요. 🎜 으아아아 🎜입력이정의되지 않음
이므로 결국toPromise
는정의되지 않음
을 반환하고 감지는Promise
가 아니므로 오류가 발생합니다. 🎜 🎜1,2,3
이 출력되지 않는 이유는yield
뒤에 있는 관계 때문입니다.yield
는 함수를 매개변수로 받아들여야 합니다. 그리고 이 함수는 실행되어야 하므로yield
뒤에는 일반적으로 비동기 작업이 옵니다. 이 함수는 콜백 함수이므로 다음과 같이 변경하면 됩니다. 🎜 으아아아