xml地图|网站地图|网站标签 [设为首页] [加入收藏]

皇家88娱乐平台JavaScript的异步执行,通用任务定

来源:http://www.ccidsi.com 作者:最新解决方案 人气:85 发布时间:2020-02-06
摘要:从触发器中布置叁个通用触发MainStarter Javascript 语言的实践蒙受是“单线程”(singlethread)。所谓“单线程”,就是指叁回只可以变成少年老成件职务。假诺有多少个职分,就非得排队

从触发器中布置叁个通用触发MainStarter

Javascript 语言的实践蒙受是“单线程”(single thread)。所谓“单线程”,就是指叁回只可以变成少年老成件职务。假诺有多少个职分,就非得排队,前者职分成功,再进行前边二个职责。

委托 接口

皇家88娱乐平台,声明:

/**
 * Created by kenny on 16/3/28.
 */
'use strict';
import React, {
  Component,
  PropTypes
} from 'react';
import {
  AppRegistry,
  View,
  Navigator,
  StyleSheet,
  StatusBar,
  DeviceEventEmitter,
} from 'react-native';

import SplashPage from './pages/SplashPage';
import { naviGoBack } from './utils/CommonUtil';
import LoadingView from './components/LoadingView';
import {STYLESBASE} from './constants/StylesBase';
import MainEnterPage from './pages/MainEnterPage'

let tempNavigator;
let initLoadingState={
  isShow:false,
  AcIndicShow:true,
  text:'数据加载中',
};

class HL_LY_APP_RN extends Component {

  constructor(props){
    super(props);
    this.state = {
      LoadingState: initLoadingState,
    }; 
    this.init = this.init.bind(this);
    this.renderScene = this.renderScene.bind(this);
    this.goBack = this.goBack.bind(this);
  }

  init() {
  }

  componentWillMount(){
    AppController.LoadingState = (LoadingStateData) => {
      this.setState({
        LoadingState: LoadingStateData
      });
    }
  }

  componentDidMount() {
  }

  componentWillUnmount() {
  }

  goBack() {
    return naviGoBack(tempNavigator);
  }

  configureScene() {
      var conf = Navigator.SceneConfigs.HorizontalSwipeJump;
      conf.gestures = null;
      return conf;
  }

  renderScene(route, navigator) {
    let Component = route.component;
    return <Component {...route.params} navigator={navigator} />
  }

  render() {
    var defaultName = 'Splash';
    var defaultComponent = MainEnterPage;
    var defaultSceneConfig = Navigator.SceneConfigs.HorizontalSwipeJumpFromRight;
    var defaultParams = {};

    return (
      <View style={{ flex: 1 }}>
        <Navigator 
          style={styles.navigator}
          initialRoute = {
            {
              name: defaultName,
              component: defaultComponent,
              sceneConfig: defaultSceneConfig,
              params: defaultParams
            }
          }
          configureScene={this.configureScene}
          renderScene={this.renderScene}
        />
        <View accessible={true} style={ {position:'absolute', backgroundColor:'#ffff00', flex:1 }}>
          {
            this.state.LoadingState.isShow ? <LoadingView text={this.state.LoadingState.text} AcIndicShow={this.state.LoadingState.AcIndicShow} /> : null          
          }
        </View>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  navigator: {
    flex: 1
  }
});

var AppController = {
  LoadingState: function(LoadingStateData) {}
}

AppRegistry.registerComponent('HL_LY_APP_RN', () => HL_LY_APP_RN);

var instance = null;

export const AppInstance = function() {
  if (instance === null) {
    instance = AppController;
  }
  return AppController;
};

**实现 :

            // 请求数据的网络层提示
            AppInstance().LoadingState({
                isShow:true,
                AcIndicShow:true,
                text:'数据加载中',
            });

调用:

<bean ></bean> <bean > <property name="targetObject" ref="mainStarter" /> <property name="targetMethod" value="run" /> <property name="concurrent" value="false" /></bean><bean > <property name="jobDetail" ref="mainStarterDetail" /> <property name="startDelay" value="10000" /> <property name="repeatCount" value="0" /> </bean> <bean > <property name="triggers"> <list> <ref bean="mainStarterTrigger" /> </list> </property></bean>

这种形式的实惠是兑现起来比较轻易,奉行情形相对单纯;坏处是借使有三个职责耗费时间不长,后边的职务都必得排队等着,会延宕整个程序的执行。不足为奇的浏览器无响应(假死),往往便是因为某风流倜傥段 JavaScript 代码长日子运作(譬喻死循环),以致整个页面卡在此个地方,其余职分无法实施。

AppInstance().showLoading(false);


Javascript异步编制程序的4种办法


http://www.ruanyifeng.com/blog/2012/12/asynchronous_javascript.html
广阔的浏览器无响应(假死),往往正是因为某大器晚成段Javascript代码长期运作(比如死循环),导致整个页面卡在此个地方,别的任务不可能执行。
"同步方式"就是上大器晚成段的格局,后三个职务等待前八个职务完结,然后再实施,程序的实施种种与职务的排列顺序是相似的、同步的;
**"异步情势"则统统不一致,每二个职分有一个或八个回调函数(callback),前二个职分达成后,不是实施后二个职责,而是举行回调函数,后二个任务则是不等前二个职分实现就举办,所以程序的实施各种与任务的排列顺序是不相仿的、异步的。

重在是天职业中学央来推行的

public class MainStarter{ // 任务中心 private TaskCenter taskCenter; public void setTaskCenter(TaskCenter taskCenter) { this.taskCenter = taskCenter; } public void run() { if(taskCenter==null) { taskCenter = new TaskCenterSupport(); } taskCenter.run(); }}

public interface TaskCenter { // 加载任务 public void loadTask(Task taskTracker); public List<Task> getTasks(); public void run(); public void terminate(); }

义务基本存储义务,职责 Task 为代码最后实践

public abstract class Task extends Thread { private boolean isAlive = true; @Override public void run() { while  { try { doRun(); } catch (Exception e) { logger.error("run task error.", e); } } } public void setAlive(boolean isAlive) { this.isAlive = isAlive; } // 子类业务需要实现此方法,方法中为具体业务 protected abstract void doRun() throws Exception;}

public class TaskCenterSupport implements TaskCenter { private List<Task> tasks; public List<Task> getTasks() { return tasks; } public void loadTask(Task task) { if (tasks == null) { tasks = new ArrayList<>(); } tasks.add; } public void run() { if(CollectionUtils.isNotEmpty{ for (Task task : tasks) { if(task != null) { task.setAlive; task.start(); } } } } public void terminate() { if(CollectionUtils.isNotEmpty{ for (Task task : tasks) { if(task != null) { task.setAlive; } } tasks.clear(); try { Thread.sleep; } catch (InterruptedException e) { logger.error(e.getMessage; Thread.currentThread().interrupt(); } } }}

public class ZBTask extends Task{ public ZBTask () { TaskCenter taskCenter = TaskCenterSingleton.getInstance(); taskCenter.loadTask; } public void doRun() throws Exception { /* 具体业务实现,这里就能会定时执行, * 若有需要还可以在此使用休眠, * 这样只会把此线程挂起,不影响其他 Task 子类的执行 */ }}

JavaScript 语言自身并比较快,慢的是读写外界数据,譬如等待 Ajax 央求重返结果。那时,即便对方服务器迟迟未有响应,大概网络不通畅,就能够招致脚本的长日子停滞。

生机勃勃、回调函数

function f1(callback){
setTimeout(function () {
// f1的任务代码
callback();
}, 1000);
}
f1(f2);

为了消除这些标题,Javascript 语言将职务的推行方式分成三种:同步(Synchronous)和异步(Asynchronous)。“同步情势”就是金钱观做法,后四个职务等待前一个职责完成,然后再实施,程序的推行顺序与职分的排列顺序是相符的、同步的。那频仍用来一些简单的、飞快的、不关乎 IO 读写的操作。

二、事件监听

f1.on('done', f2);
function f1(){
setTimeout(function () {
// f1的任务代码
f1.trigger('done');
}, 1000);
}

f1.trigger('done'卡塔尔(قطر‎表示,试行到位后,立刻触发done事件,进而最早施行f2。

本文由68399皇家赌场发布于最新解决方案,转载请注明出处:皇家88娱乐平台JavaScript的异步执行,通用任务定

关键词: 68399皇家赌场 JavaScript 编程基础

最火资讯