我如何"循环"两个函数没有在JavaScript中重新调用?

时间:2018-01-16 21:45:42

标签: javascript

我将简短,让我们举一些简单的例子。我有这两个功能:

function first() {
  alert("Function One");
}

function second() {
  alert("Function Two");
}

我想从函数first()传递到second() 而不用执行此操作:

function first() {
  alert("Function One");
  second();
}

function second() {
  alert("Function Two");
  first();
}

因为我会创建一个堆栈溢出(比如first()在其自身内部调用second(),然后second()中的first()正在调用first()再次等等,创造一个无用的无限循环

我怎么能简单地通过"从功能到另一个?询问您是否需要更多信息。

谢谢大家。

3 个答案:

答案 0 :(得分:2)

你可以简单地在循环中调用这两个函数:

while (true) {
    first();
    second();
}

但是这样的无限循环在Javascript中并不好用,这会锁定浏览器。目前尚不清楚你真正想做什么。这样可以避免堆栈溢出。

答案 1 :(得分:0)

试试这个



            <div class="textbox_content">
                <div>
                    <table width="100%">
                        <thead id="report_content_headers">
                            <tr>
                                <th>{{type}}</th>
                                <th>Total Unloads</th>
                                <th ng-show="{{type}} === 'Exception'">Total Cases (re-worked)</th>
                                <th>Total Pallets (re-worked)</th>
                                <th>Load Type ( BD/MX )</th>
                                <th>Load Type ( Runout )</th>
                                <th>Load Type ( Floor )</th>
                                <th>{{type}}</th>

                            </tr>                               
                        </thead>
                        <tbody ng-repeat="metric in results | orderBy:'unloads':true" id="reportRow_{{$index}}">
                            <tr id="report_content_background" class="metrics">
                                <td align="center" ng-click="toggleReport($index, metric)">
                                    {{metric.shortName}} 
                                    <img src="${pageContext.request.contextPath}/resources/images/adminium/led-icons/chart_bar.png">
                                </td>
                                <td align="center">{{ metric.unloads | number:0 }}</td>
                                <td align="center">{{ metric.cases | number:0 }}</td>
                                <td align="center">{{ metric.pallets | number:0 }}</td>
                                <td align="center">{{ metric.bdmx || '0' }}</td>
                                <td align="center">{{ metric.runout || '0' }}</td>
                                <td align="center">{{ metric.other || '0' }}</td>
                            </tr>
                            <tr class="metric-details" ng-if="report[metric.shortName]">
                                <td align="center" colspan="7">
                                    <div id="firstChart_{{$index}}" style="width: 500px; height: 400px; float: left;">
                                    </div>
                                    <div id="secondChart_{{$index}}" style="width: 500px; height: 400px; float: left;">
                                    </div>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </div>
            </div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

如果你想要实现的目标总是一个接一个地调用它,如果它还没有被调用,你可以做类似的事情:

function first(isChained) {
    alert("Function One");
    if (!isChained) {
        second(true);
    }
}

function second(isChained) {
    alert("Function Two");
    if (!isChained) {
        first(true);
    }
}

然后你仍然可以自己打电话给他们:

first()

并且isChained参数将默认为未定义,其将评估为false,从而导致second()被调用。