[JavaScript] Los nuevos principios find () y findIndex () en la API asíncrona encapsulada en ES6

Prefacio

En circunstancias normales, si queremos obtener el resultado dentro de la función nuevamente, usaremos la función de devolución de llamada para obtenerlo.La misma función de devolución de llamada también puede obtener el resultado de la operación asíncrona dentro de la función.

Ajustar API asincrónica

En circunstancias normales, la función como parámetro es obtener el resultado de la operación asíncrona dentro de la función

function fn(callback){
    
    
	// var callback = function(data) { console.log(data)}
	setTimeout(function(){
    
    
		var data = 'hello';
		callback(data);
	},1000)
}
// 如果需要获取一个函数中异步操作的结果,则必须通过回调函数来获取
fn(function(data){
    
    
	console.log(data);
})

El mismo paquete ajax es:

function get(url, callback){
    
    
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open("GET", url, true);
    xmlhttp.send();
    xmlhttp.onreadystatechange = function () {
    
    
        if (xmlhttp.status === 200 && xmlhttp.readyState == 4) {
    
    
            callback(xmlhttp.responseText);
        }
    }
}

get('a.js', function(data){
    
    
    console.log(data);
})

EcmaScript 6 agrega muchos métodos nuevos. Estas funciones necesitan pasar una función como parámetro. Este parámetro es para ejecutar los métodos dentro de la función encapsulada, como los métodos find y findIndex.

encontrar
findIndex

find () y findIndex ()


// find  和 findIndex 接收一个方法作为参数,方法内部返回一个条件
// find  和 findIndex 会遍历所有的元素,执行给定的带有条件返回的函数
// 符合该条件的元素就会作为 find 和 findIndex 方法的返回值

Array.prototype.myFind = function(conditionFunc){
    
    
    // 只要调用myFinde函数,就会遍历对象 users 的每一项
    for(var i = 0 ; i < this.length; i++){
    
    
    	// 在判断的时候,都会调用 conditionFunc 这个参数作为的函数
        if(conditionFunc(this[i])){
    
    
            return this[i];
        }
    }
}

Array.prototype.myFindIndex = function(conditionFunc){
    
    
	// 只要调用 myFindIndex 函数,就会遍历对象 users 的每一项
    for(var i = 0; i < this.length; i++){
    
    
        if(conditionFunc(this[i])){
    
    
            return i;
        }
    }
}

prueba:

var users = [
    {
    
    id: 0, name: '小明'},
    {
    
    id: 1, name: '小明'},
    {
    
    id: 2, name: '小明'},
    {
    
    id: 3, name: '小红'}
]

// 查找符合id为2的对象
var retFind = users.myFind(function(item){
    
    
    return item.id === 2;
})
// 查找符合name为小红的对象所在的索引
var retFindIndex = users.myFindIndex(function(item){
    
    
    return item.name === '小红';
})

console.log(retFind);  // { id: 2, name: '小明' }
console.log(retFindIndex); // 3

Supongo que te gusta

Origin blog.csdn.net/weixin_42339197/article/details/104209971
Recomendado
Clasificación