Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么';获取迭代器函数最终值的惯用方法是什么?_Javascript_Typescript_Iterator_Generator_Yield - Fatal编程技术网

Javascript 什么';获取迭代器函数最终值的惯用方法是什么?

Javascript 什么';获取迭代器函数最终值的惯用方法是什么?,javascript,typescript,iterator,generator,yield,Javascript,Typescript,Iterator,Generator,Yield,我有一个非常复杂的函数,它描述了一些迭代过程。它看起来像这样(我有很多与问题无关的代码): 有没有更惯用、更简单的方法来达到同样的效果?你能不能添加一个选项 function* functionName( config: Config, poolSize: number, yieldSteps = true ): Generator<[State, Step], boolean, void> { /* ... */ for (const st

我有一个非常复杂的函数,它描述了一些迭代过程。它看起来像这样(我有很多与问题无关的代码):


有没有更惯用、更简单的方法来达到同样的效果?

你能不能添加一个选项

function* functionName(
    config: Config,
    poolSize: number,
    yieldSteps = true
): Generator<[State, Step], boolean, void> {
    /* ... */

    for (const step of someOtherProcess()) {
        /* ... */

        if (yieldSteps) { yield [state, step] }

        switch (stateType) {
            case StateType.Start:
                if (/* ... */) {
                    return false
                } else {
                    return true
                }

            case StateType.Invalid:
                return false
        }
    }

    return false
}
function*functionName(
config:config,
池大小:数字,
yieldSteps=true
):发电机{
/* ... */
for(someOtherProcess()的常量步骤){
/* ... */
if(yieldSteps){yield[state,step]}
开关(状态类型){
案例状态类型。开始:
如果(/*…*/){
返回错误
}否则{
返回真值
}
案例状态类型。无效:
返回错误
}
}
返回错误
}

谢谢!这就解决了我在这个特殊情况下的问题,但我仍然很好奇,如果生成器函数是第三方API的一部分呢?
const generator = functionName(config, poolSize)
let result
while (!(result = generator.next()).done) {}
return result.value as boolean
function* functionName(
    config: Config,
    poolSize: number,
    yieldSteps = true
): Generator<[State, Step], boolean, void> {
    /* ... */

    for (const step of someOtherProcess()) {
        /* ... */

        if (yieldSteps) { yield [state, step] }

        switch (stateType) {
            case StateType.Start:
                if (/* ... */) {
                    return false
                } else {
                    return true
                }

            case StateType.Invalid:
                return false
        }
    }

    return false
}