根据if-statments结果编辑if-statment参数中变量的值

时间:2017-04-18 08:51:03

标签: javascript node.js for-loop if-statement woocommerce

我想要做的是每五秒钟联系一次WooCommerce以检查产品是否已被编辑。我可以通过要求res [0] .date_modified来做到这一点。然后我比较它创建的时间(res [0] .date_created)和最后修改。

如果值相同,则产品从未被修改过。但是,如果产品被修改,我不再想要比较产品创建和修改的时间。

我现在想要将时间与上次修改时间进行比较" res [0] .date_modified"所以我可以看到它是否会被另一次修改。

这就是我的想法:

function lookForEdit(){

WooCommerce.get('products/',  function(err, WooData, res) {
    res=JSON.parse(res)

    var comp = res[0].date_created;

    if(comp == res[0].date_modified){
        console.log("the product haven't been modified")
    }
    else{
        console.log("The product have been edited")
        comp = res[0].date_modified;
    }
})
}

setInterval(lookForEdit, 5000);

我理解为什么它不起作用,但我不知道如何解决它。

我该如何解决?

由于



我上周也问了这个问题,并且认为我得到了一个可行的答案。我得到了答案:

var comp;


function lookForEdit(){

WooCommerce.get('products/',  function(err, WooData, res) {
    res=JSON.parse(res)
    //console.log(res[0])

    if(comp == undefined){
        console.log("The product haven't been editet")
        comp = res[0].date_created;
    }
    if(comp != res[0].date_modified){
        comp = res[0].date_modified;
        console.log("The product have been edited")
        //editAPI(res[0])

    }




});
};

然后我意识到,当我将函数放在for循环中来检查多个项目时,这不会起作用。我无法使用" comp"如果检查索引0和索引1。

再次感谢你!




我想要实现的目标

var comp;


function lookForEdit(){

WooCommerce.get('products/',  function(err, WooData, res) {
    res=JSON.parse(res)
    for(var i = 0; i < res.length; i++ ){

    if(comp == undefined){
        console.log("The product haven't been editet")
        comp = res[i].date_created;
    }
    if(comp != res[i].date_modified){
        comp = res[i].date_modified;
        console.log("The product have been edited")
        //editAPI(res[i])

    }
}



});
};

2 个答案:

答案 0 :(得分:0)

您可以使用数组或对象在变量comp中存储多个值。在这种情况下,您可以使用comp = res[0].date_modified,而不是使用comp[0] = res[0].date_modified分配值。

完整示例:

var comp = {};

function lookForEdit(){

WooCommerce.get('products/',  function(err, WooData, res) {

    res=JSON.parse(res)

    for (var i = 0; i < res.length; ++i) {
        //console.log(res[i])

        if(comp[i] == undefined){
            console.log("The product haven't been editet")
            comp[i] = res[i].date_created;
        }
        if(comp[i] != res[i].date_modified){
            comp[i] = res[i].date_modified;
            console.log("The product have been edited")
            //editAPI(res[i])    
        }
    }
});
};

答案 1 :(得分:0)

您可以使用功能闭包来维护产品的状态,即它是旧的。

var checkIfModified = function() {
    var isNew = true;
    return function() {
        var dateProp = isNew ? 'date_created' : 'date_modified';
        var time = test.shift();
        if( time !== product[dateProp]) {
            product.modified = time;
            isNew = false;
            console.log( 'modified')
        } else {
            console.log('it is same');
        }
    }
}

var lookForEdit = checkIfModified();
for( /*your for loop to check for edit*/ ) {
    lookForEdit();
}